首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
负能量迪不要
门头沟学院 C++
发布于陕西
关注
已关注
取消关注
@Dreams0000:
🍅07-C++面试之从代码到可执行程序经历
[TOC]0 前述针对于自己在秋招的面试中,对于CPP部分遇到的问题,其中大部分是以此为起点,你可以基于这些点,将自己对于CPP学习的知识点,串联起来。无论面试官,问这一类问题中的某个点,你都应该可以将这一个珠子串联到自己的知识链上来讲。这是一种拓展知识的能力。在此专栏下面个人校招记录:回馈牛客,对CPP做一个小小的总结。本部分关于CPP从代码到可执行程序的4个阶段,以预编译/预处理main.i-->编译main.s-->汇编main.o-->链接 main的顺序来展开叙述,紧接着给出了链接部分的一些细节,最后分别讨论了静态链接和动态链接的优缺点。下面对应的是之前发布的个人校招其他公司面试总结,希望可以更好的帮到你✍✍总结:以代码的方式回看自己23届校招 | 或恐慌、疑惑、好在坚持!🌋大疆DJI 嵌入式 ✨MINIEYE自动驾驶 软开 深圳 实习 🌟百度 嵌入式软开 上海 2022.07🌳深圳杰理科技嵌入式 2022.07.26🌵深圳 诺瓦星云提前批 嵌入式 2022.08.06🌴哲库科技 提前批 2022.08.07🌲经纬恒润 自动驾驶嵌入式 1,2面 2022.08.15😥丰疆智能 嵌入式软开 1,2,3面+4面 2022.08.09🤷♂️一次让我略感疲惫的英文面试--吉利极氪 嵌入式软开🙆♂️♂️【深信服校招】笔试+面试 软件开发工程师🌾ZTE中兴软件工程师 一面+二面 2022.08.29🌱紫光同芯 嵌入式软开 芯片 2022.09.19🌄美团校招面经 嵌入式 1,2面 2022. 09🎋360 软开 一面+二面+ 2022.09这里是CPP一些面试问题整理🥭01-C++面试之C++11新特性总结🍏02-C++面试之static关键字🍑03-C++面试之四种强制类型转换🍋04-C++面试之析构函数和构造函数🍐05-C++面试之多态底层实现:虚表和虚表指针🍎06-C++面试之STL内存管理篇🍅07-C++面试之从代码到可执行程序经历……未完待续1 预编译/预处理主要处理源代码文件中的以#开头的预编译指令。包括1)将#define宏定义替换、宏的展开。2)#if #else #endif条件编译指令。3)将注释消除掉。4)#include头文件包含指令、特殊符号。预编译所完成的基本上是对源程序的“替代”工作。经过上述的这些替代,产生一个没有任何替代的输出文件。生成a.i或a.ii文件。2 编译把预编译之后生成的a.i或a.ii文件,去检查代码是否有语法上的错误,并且对代码优化,进行一些列词法分析,语法分析,语义分析及优化后,生成相应的汇编代码文件。输出.s文件。3 汇编把汇编代码转换成机器码,机器可以执行的指令(机器码)。翻译成机器码,输出.o文件(对应于Windows平台下)或者.obj文件。将编译之后的.s文件,汇编成可重定位的目标文件.o文件。4 链接将不同的源文件产生的目标文件(可重定位的目标文件和printf.o等单独编译)进行链接,从而形成一个可执行程序。静态链接细节静态链接主要有两步:1)空间与地址分配,分配虚拟地址;2)进行符号解析与重定位。空间与地址分配linker将能够获得的所有输入目标文件的段长度,并且将它们合并,计算输出文件中各个段合并后的长度与位置,并建立起映射关系。比如:将各个目标文件.text段合并在一起,.data段合并在一起,并且分配虚拟地址空间。符号解析和重定位分配好空间后,进行真正的核心操作,进行重定位,主要是伴随着符号解析过程,每个目标文件都可能定义一些符号,也可能引用到定义在其他目标文件的符号。而重定位的过程中,每个重定位的入口都是对一个符号的引用,那么当linker需要对某个符号的引用进行重定位时,它就要确定这个符号的目标地址。这时候,linker就会去查找所有输入目标文件的符号表组成的全局符号表,找到相应的符号进行重定位。比如说我们的hello world.c中的main函数并不知道printf这个函数的地址,linker在链接的时候会根据引用到的符号printf,自动去相应的模块查找printf的地址,然后将hello world.c模块中引用到printf的指令进行重新修正,让它的目标地址成为真正的printf函数的地址,这个就是链接的基本过程。链接的分类:静态链接-static(应加入选项)和动态链接静态链接优缺点函数和数据被编译进一个二进制文件,通常以.a结尾,比如某些封装好的算法就是用.a提供给对外的API程序接口被外部调用。在使用静态库的情况下,进行编译链接可执行文件时,linker从库中复制这些函数和数据,并将它们和应用程序的其它模块组合起来,创建最终的可执行文件。1)空间浪费:因为每个可执行程序中对所有需要的目标文件都要有一份副本,所以如果多个程序对同一个目标文件都有依赖,会出现同一个目标文件都在内存存在多个副本。2)更新困难:当库函数的代码修改了,这个时候就需要重新进行编译链接形成可执行程序。3)运行速度快:静态链接的优点就是,无环境依赖,在可执行程序中已经具备了所有执行程序所需要的任何东西,在执行的时候运行速度快。动态链接优缺点其中共享库就是为了解决上述静态库的前两个问题而设计的,在Linux系统中通常使用.so后缀表示;Windows系统上被称之为DLL。具有一下特点:1)动态链接的基本思想是把程序按照模块拆分成各个相对独立部分,在程序运行时才将它们链接在一起形成一个完整的程序,而不是像静态链接一样把所有程序模块都链接成一个单独的可执行文件。加快了编译速度。2)减少内存占用:共享库,就是即使需要每个程序都依赖同一个库,但是该库也不会像静态链接那样在内存中存在多分,副本,而是这多个程序在执行时共享同一份副本。3)更新方便:更新时只需要替换原来的目标文件,而无需将所有的程序再重新链接一遍。当程序下一次运行时,更新的新版本目标文件会被自动加载到内存并且链接起来,程序就完成了升级的目标。4)性能损耗:因为把链接推迟到了程序运行时,所以每次执行程序都需要进行链接,所以性能会有一定损失。
点赞 6
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
今天 08:42
浙江大学 算法工程师
小红书 C++ 开发 业务面 面经
1. 自我介绍(根据个人情况准备)2. 说说HTTP的发展历程,HTTP/1.1、HTTP/2、HTTP/3有什么区别答案:HTTP/1.0:短连接:每次请求都要建立TCP连接无状态只支持GET、POST等基本方法HTTP/1.1:长连接:Connection: keep-alive管道化:可以同时发送多个请求缓存控制:Cache-Control分块传输:Transfer-Encoding: chunkedHost头:支持虚拟主机HTTP/2:二进制分帧:不再是文本协议多路复用:一个TCP连接处理多个请求头部压缩:HPACK算法服务器推送:Server Push优先级和依赖:请求可以设置优先级...
C++八股文全集
点赞
评论
收藏
分享
02-17 01:14
合肥工业大学
大二非科班学生c++方向求助
目前大二,不知道后面该走什么方向了,现在是继续做其它项目学一些通用技术栈,还是去找实习呢
点赞
评论
收藏
分享
01-27 17:15
首钢工学院 Java
简历求锐评
各位佬们,帮们看看简历是否有可以优化的地方,特别是实习经历(不知道咋写),求锐评
你的简历改到第几版了
点赞
评论
收藏
分享
01-30 16:13
浙江大学 Java
字节好像要四面挂了
😓😓 日常实习3技术面+HR面。周三完成的HR面,然后今天问HR什么结果,然后。。。真是一个悲伤的故事😅
嵌入式的小白:
hr这已经算是很明确的回答了 ,赶紧找其他机会
点赞
评论
收藏
分享
02-19 08:48
蚌埠坦克学院 嵌入式软件开发
得力嵌入式工程师 一面 面经
1. 自我介绍您好,我叫[姓名],[学历]毕业于[学校][专业]。我有[X年]嵌入式开发经验,主要从事基于ARM Cortex-M系列微控制器的产品开发。在技术方面,我熟悉C/C++编程,掌握RTOS(如FreeRTOS)的应用,熟悉常用外设驱动开发(UART、SPI、I2C、ADC、PWM等)。项目经验包括[具体项目1]和[具体项目2],在这些项目中我负责[具体职责],解决了[具体问题]。我对嵌入式系统有浓厚兴趣,平时会关注行业新技术,也会通过开源项目和技术社区持续学习。希望能加入贵公司,在嵌入式领域继续深耕发展。2. 进程和线程的区别定义:进程:系统资源分配的基本单位,拥有独立的地址空间线...
查看10道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
嵌入式应届生春招怎么准备——从零到拿 Offer 的系统攻略
774
2
...
28届Go日常实习简历求牛爷爷锐评
489
3
...
关于租房
375
4
...
HTTP 和 HTTPS 区别
368
5
...
27届实习近一年的年度经历和总结
355
6
...
agent实习都干什么?prompt设计
262
7
...
得力嵌入式工程师 二面 面经
206
8
...
美团推荐算法一面
203
9
...
27前端双非找实习
182
10
...
大三无实习
178
创作者周榜
更多
正在热议
更多
#
牛客新年AI问运
#
13650次浏览
166人参与
#
牛友们,签完三方你在忙什么?
#
137334次浏览
993人参与
#
牛客AI体验站
#
17826次浏览
302人参与
#
担心入职之后被发现很菜怎么办
#
282438次浏览
1185人参与
#
如何缓解入职前的焦虑
#
258806次浏览
1451人参与
#
牛客租房专区
#
151254次浏览
1477人参与
#
秋招开始捡漏了吗
#
229437次浏览
1044人参与
#
秋招投递攻略
#
268754次浏览
2553人参与
#
九月了,是考研还是就业?
#
89143次浏览
556人参与
#
校招第一份工作你干了多久?
#
139331次浏览
609人参与
#
搜狐工作体验
#
4109次浏览
29人参与
#
机械人求职现状
#
33615次浏览
297人参与
#
我是XXX,请攻击我最薄弱的地方
#
61745次浏览
409人参与
#
用友工作体验
#
18075次浏览
151人参与
#
你的实习什么时候入职
#
348044次浏览
2291人参与
#
今年秋招还有金九银十吗
#
75077次浏览
506人参与
#
机械人的offer怎么选
#
252628次浏览
1189人参与
#
校招谈薪技巧
#
129601次浏览
1357人参与
#
AI了,我在打一种很新的工
#
140470次浏览
1384人参与
#
这份实习,有没有动摇过你的职业方向?
#
1990次浏览
27人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务