首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
F-zp
北京工业大学 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
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-22 16:06
北京理工大学 产品经理
文科生投产品岗还有救吗
实习教会我的事
点赞
评论
收藏
分享
01-22 13:42
蓝禾技术_电商事业部_电商运营管培生(准入职员工)
蓝禾科技内推,蓝禾科技内推码
面经:蓝禾的流程推得很快,基本上投完两天就接到了hr的初试电话,直接进行了初试。初试全程大概三十分钟,hr小哥态度很和善。主要问了实践经历获奖的情况最有成就感的事情对电商运营的理解选择公司的标准等,都是比较常规的问题。禾你一起,做不可能的事 | 蓝禾26届校招启动啦公司介绍:蓝禾2008年成立于深圳,是一家集产品、设计、研发、品牌、营销、大数据运营于一体的创新型科技公司,旗下拥有图拉斯TORRAS、锐舞RANVOO、卡斯酷CASEKOO等多个品牌招聘岗位:运营(国内)、运营(国外)、营销、设计、研发技术、职能工作地点:深圳内推链接:https://lanhevip.jobs.feishu.cn...
点赞
评论
收藏
分享
2025-12-31 16:25
用友_Java开发实习生(实习员工)
27届学院本一段中厂一段中大厂实习,简历求锐评
用友打算干到3月份开学,之后冲击中大厂暑期实习,想知道这份简历能不能达到大厂暑期门槛
程序员花海_:
实习写的太偏技术了 分库分表这种一看就和应届生没关系
点赞
评论
收藏
分享
今天 13:02
文远知行_感知算法工程师(准入职员工)
文远知行内推,文远知行内推码
恍恍惚惚也实习快半年了,工作主要是后端开发。 进了才知道是自动驾驶头部的明星初创(不是的话别打我🫣)。每天从家走路15min/骑车5min到公司属实很爽。 整体规模不大,工作内容还是很丰富。从python后端到java后端,中间又穿插了一个月前端开发(噩梦hhh),以后很可能还会涉及scala。长远来看,应该还是java和scala为主,go也有使用但是不清楚我会不会用上。 我本身是第一段开发实习,加上底子很弱,确实学到很多也成长很多。被分到各种任务有时候还是蛮慌张的,好在结果整体还ok! 不提倡狂加班,还是以结果为导向,干完就可以溜溜球。加上通勤很少,整体强度不算很大。组内氛围也是挺不错的...
文远知行公司福利 551人发布
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
J人永远闲不下来于是去提前实习
2362
2
...
mentor视角下的优秀实习生
2095
3
...
拥抱AI,程序员的最后出路
2066
4
...
牛客吐槽大会 | 有槽不吐,留着过年?吐完领现金红包,痛快!
1964
5
...
努力挣钱的意义具象化了
1736
6
...
大厂提前实习对AI开发的新感悟
1574
7
...
真正会被取代的,是你心里面的幻觉
1491
8
...
去独角兽做龙头还是去大厂做凤尾
1478
9
...
我身材再曼妙,也没有我的工资好笑!
1415
10
...
马斯克最新炸裂采访,AI会带走一半工作岗位,普通人将何去何从?
1359
创作者周榜
更多
正在热议
更多
#
牛客吐槽大会
#
2902次浏览
66人参与
#
机械人你知道哪些单休企业
#
83074次浏览
415人参与
#
今年春招是金一银二嘛?
#
8263次浏览
113人参与
#
参加完秋招的机械人,还参加春招吗?
#
103666次浏览
686人参与
#
1月小结:你过的开心吗?
#
1882次浏览
51人参与
#
抛开难度不谈,你最想去哪家公司?
#
4395次浏览
113人参与
#
为什么有人零实习也能进大厂?
#
5091次浏览
127人参与
#
AI求职实录
#
3653次浏览
105人参与
#
AI时代的工作 VS 传统时代的工作,有哪些不同?
#
8303次浏览
200人参与
#
机械人春招想让哪家公司来捞你?
#
379255次浏览
3141人参与
#
当你问AI“你会取代我的工作吗”,它说_?
#
3720次浏览
134人参与
#
你的第一家实习公司是什么档次?
#
4266次浏览
74人参与
#
没关系,至少我的__很曼妙
#
3710次浏览
65人参与
#
赚钱的意义在这一刻具象化
#
3966次浏览
96人参与
#
你的landing期是如何度过的?
#
8691次浏览
167人参与
#
除了Java,最推荐学什么技术?
#
5754次浏览
147人参与
#
我发现了面试通关密码
#
1599960次浏览
19678人参与
#
一人一道大厂面试题
#
114092次浏览
1263人参与
#
你觉得什么岗位会被AI替代
#
36794次浏览
255人参与
#
你在职场上见过哪些“水货”同事
#
30748次浏览
167人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务