C++ 腾讯PCG IOS客户端手机QQ开发 二面

面试前的小插曲 下午6点40多手机开飞行模式开的摄像头监控准备某其他厂的笔试 等到我交卷大概8点40多一看手机赫然看到腾讯发来的面试邀请 还有手机和微信的面试官的好友申请 直接给孩子吓懵了 然后开始联系面试官开始面试
1 上来面试官解释了为什么今晚都晚了这么久了还是抓起来面试 因为他们部门的提前批招人 今晚就截止 所以今晚我就得面试
2 项目相关从项目入手 大概介绍了一下项目 然后就开始问沾了点边的  因为我这个项目实际上主要难点在于通信相关的一些电磁波衰减预测算法的实现 写的整个软件其实业务逻辑十分简单 就是简单的 输入录入数据 然后计算一下结果
保存在某个txt文件里面然后调用某地图的API在地图上显示最终的结果
3 面试官问项目中遇到的问题
回答到调用计算模块的时候内存有泄漏导致程序崩溃 一开始是打算使用多进程解决 子进程结束后自动回收掉子进程的资源 他泄漏就随他去吧 回答完面试官也发出疑惑觉得这个并不能解决问题
然后接着回答到 这样做确实没有解决问题(因为当时多进程多线程编程也不会估计也没做好资源回收工作) 就又回答到后面是在主进程里面执行了exec()函数调用计算模块生成的exe文件 并通过
int main()函数中
int main(int argc, char* argv[]) 
的后续两个参数来传递需要计算的数据等信息
4 你知道进程间的通信方式么 你觉得项目中调用exec()是使用了什么方式
回答到管道 socket套接字 信号 消息队列 共享内存 但是对于这个exec是什么方式不清楚 瞎猜的管道(回答的时候脑子抽了以为是调用的子进程 就想的的父子进程间肯定直接用管道通信得了) 然后面试官说了下OK。。
5 进程间共享内存是怎么实现的 这个共享内存是在用户态还是在内核态 如果进程使用共享内存的方式进行通信需要进行几次数据的拷贝
稍微深入点了 真的是一点没有了解 因为前段时间看到一个什么不知名的文章 好像是进程间可以传递一个指针 进程A传递给进程B这个指针后 B直接用这个指针来访问A要传递的数据就行 但是说着说着自己都感觉不太对 因为这个会涉及到
进程安全的问题 答着答着 想想算了还是答不知道吧  然后共享内存的话也是瞎答的用户态(×) 如果是用户态没有OS介入的话也是上面进程安全的问题 那就是内核态咯 然后拷贝几次的话 也不懂 答了一个2次 正常拷贝过去然后拷贝过来
6 什么是预处理、编译 编译期间做了什么工作 为什么使用dll 你的项目中使用的是dll吗还是什么 如果在后续版本中dll内容有所修改 你的程序能跑起来吗
预处理的话就按照正常C++的处理回答了 编译的话就简单回答了一个 将高级语言转换成汇编语言
7 为什么项目中使用Qt 你用的Qt什么版本的 使用的是什么版本的编译器
编译器答的是 mingw 然后面试官表示这个是编译器上层的东西 需要知道具体名字 然后回到到GNU.....面试官可能看不下去了就提醒了下 是GCC还是Clang 这个时候才回想起来是GCC
8 了解过汇编语言吗 没有 一看简历: 哦哦原来你是电子的学生
9 项目中Qt用的C++是哪个版本的
C++11
10 那你说说11中的智能指针吧 为什么能够保证能够自动的销毁和释放
11 什么是作用域 函数作用域是什么 为什么智能指针离开其作用域会销毁
12 函数执行时栈帧是怎么处理的 描述一下具体过程
这里本来一面后打算11号查的 9号晚上一面面完后写会面经回忆到2点多 早上休息 下午吃饭回来睡个午觉然后下午4点准备连续两场笔试准备周日早上好好查的 没想到直接两场笔试后就直接二面了
这里回答本身之前见到过 但是也只回答了个大概 类似"函数执行的时候会将其地址压栈(其实这里应该是函数的下一条语句的地址压栈 一面的时候这里就很模糊)然后传递进来的参数也会压栈 其也会创建一些局部变量
同时这个栈里也会有代码区啥的 巴啦啦的" 记不清了 反正就是挤破头和C++内存模型上面靠 最后还是回答得很烂
13 描述下PCB模块里面有什么
也同上 没来得及查 也是回答了个很模糊的 什么程序计数器(面试官表示???PCB里面有这玩意?) 状态寄存器 还有些记录地址的寄存器啥的(需要记录其进程在内存/外存)中的位置......
14 还是一面问到的问题 如果malloc一个很大的内存 比如malloc 4G 会真的给进程分配这么大的内存吗
面试官提示OS对于给每个进程分配的内存是不是有大小限制 这个限制是多少  完全木鸡.....
15 malloc的时候分配的是物理内存还是逻辑内存 怎么从逻辑内存转换到物理内存的
16 页表大概有多大 也木鸡(都是小细节啊我淦) 随便回答到1M 面试官表示有这么大吗 然后我回答到 如果页表这么大那就使用二级页表呗...面试官不说话了...
17 其他的也忘了
18 编程题: 先问我刷了多少道题 我说没刷多少100左右 可能然后就出了一个比较简单的题吧
给定一个数组表示某个区域的高度 每个数字表示一面墙的高度 求能够填充区域的大小?大概是这个意思 看了很久没看懂题目什么啥意思 左右两侧不能填充 因为填充了会漏水
用了双指针 我现在也不知道这题到底作对没
#实习##面经##腾讯##C++工程师#
全部评论
今晚就截止,那后续的面试今晚都要走完么?
点赞 回复 分享
发布于 2021-04-11 18:40
我也是今天晚上面的,面试官说他们提前批要结束了然后就今天面了😂
点赞 回复 分享
发布于 2021-04-11 19:41
所以被做烂的hard = easy嘛
点赞 回复 分享
发布于 2021-04-11 21:15
问的底层好多
点赞 回复 分享
发布于 2021-04-12 07:58
PCB模块里应该有PC寄存器所存放的下一条指令地址吧,不然这个进程时间片耗尽了切出去了,再切回来咋知道该进程下一条指令在哪里啊?
点赞 回复 分享
发布于 2021-04-12 09:49
提前批是啥意思,难道不是暑期实习面试么
点赞 回复 分享
发布于 2021-04-12 21:53
楼主你好,请问你是实习、校招还是社招?岗位是什么?开发的话,是Java方向还是C++方向?或者其他语言方向~
点赞 回复 分享
发布于 2021-04-17 09:48
请问楼主现在收到意向了吗
点赞 回复 分享
发布于 2021-04-21 12:55
m
点赞 回复 分享
发布于 03-14 16:42 广东

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
2 28 评论
分享
牛客网
牛客企业服务