WXG C++后台开发实习一二面

一面 3道题1h,项目40min,最后问了几个八股。
1. 排行榜:输入为若干条学生成绩数据,在输入的过程中会穿插若干询问, 要求输出询问的那一时刻平均分最高的3个班级的编号

2. 模拟for循环:输入为若干行字符串,字符串有3种:add, for num和end,分别表示a++、循环num次和循环结束,a初始化为0,输出a最终结果

3. 抽奖: 用rand16实现从30万人中以等概率抽1万人获奖

1. 项目难点问了很久 一直讲到面试官清楚
2. 协程上下文怎么完成切换的 需要保存哪些寄存器 多协程和单进程分别什么时候用
3. C++ 3种内存模型
4. 无锁链表的实现 结合到你的项目里的话具体怎么用

二面 3道题40min,项目+设计题+八股+反问1h30min。
1. 实现atoi,需要考虑int溢出、非法字符
2. 10亿个32位数字排序并去重
3. DP 类似于最长公共子序列

1. 项目细节问了很久问得很细
2. 设计微信朋友圈 主要是表的设计、发送和接收朋友圈怎么实现
3. C++多态的实现方式、构造和析构函数中调用虚函数的行为、析构函数为什么大多时候为虚函数
全部评论
请问内存模型具体指啥呀
点赞 回复 分享
发布于 05-05 16:35 江苏

相关推荐

小鹏汽车-c++ 自动驾驶岗位的面试(jd在最后)(原本会议45min,干到了70min+)0.15min分钟的手撕代码deleteDuplicates(ListNode* head),删除所有重复数字的节点问下复杂度是多少-n^2?如何降下来复杂度?(用c有点蒙蔽,他提了下c++容器,恍然-set和map是可以的自动排序的,可以降低,很尴尬用c为主c++为辅)1.敲打简历。做了哪些工作?问是代码框架是怎么样的?(实话实话)问问是如何实现消息队列的?(尴尬,用的现成的ucos接口)换了一个问题,用来什么技术栈(我常用c的,对这个表示陌生。我说我描述下是如何实现的吧)2.内核裁剪是这么做的?(大致说了些,根据内核打印,移除一些模块驱动。精简网络-比如去掉一些ssh,把一些服务往后移动)3.linux的文件系统说一下,说一下底层原理?比如yaffs的这个管理吧?(我说我用他们多一点,比如用过哪些类型的fs,这个底层确实接触的不多。有点慌....,不知道怎么回答)4.调用read函数读取数据,到得到数据,中间过程发生了什么?(说了个大概:应用层调用read,引发一个系统调用,cpu从用户模式切换到内核模式,想要参数将会传递给内核内核会调用参数进行验证内核验证通过会找到对应文件结构体(file文件)进行查找和定位,通过file文件可以找到节点inode,闪传驱动读取数据和ecc校验数据接下里就是数据从内核到用户空间的复制,返回用户空间?)5.用什么方案去实现状态机机制(我说了下:通过状态机标志位+轮询方式)6.说下linux内核的内存管理,他们是怎么管理的?为何要引入虚拟我提到了进程隔离(内存空间的隔离),访问权限的控制,图片物理内存显示,实现内存扩展给开发提供了一个同一的、连续的地址空间,我们不需要关注物理内存的布局和碎片,检查程序开发和内存管理7.GDB常用哪些指令?如何用GDB调试查找死锁问题?我讲了lrbsqdp(提前速记了:冷若冰霜驱动盘)这个几个指令的使用l-list显示10行代码,r-run运行代码,b-break设置断点,s-step单步运行,q-quit推出,d-del删除断点,p-print打印变量。如何查找:结合top和ps。通过info threads打印出所有线程的信息,包括id和状态通过thread id 切换到某一个线程进行栈回溯,了解栈在做什么然后用print打印锁信息,查看依赖关系和锁状态8.智能指针有哪些,哪些使用场景?三种unique_ptr,shared_ptr,weak_ptr场景:第一个是希望对资源拥有唯一所有权的时候用;第二个是希望多个指针共享同一块资源的所有权时,第三个主要时用于解决第二个可能产生的循环引用问题时用。9.拷贝构造函数的传入参数,如果不加引用符号会怎么样?会导致无线递归,最后引发栈溢出10.多态是怎么实现的?主要是通过虚函数和指针来实现的。讲了有编译多态和运行时动态多态(主要讲一下运行多态?)主要讲了虚函数表和虚函数指针的逻辑11.出了这个虚函数,还有通过哪些方式实现这个动态多态的过程呢?function,bind,策略模式。知道,但是记得不多了。12.反问阶段.日常用的,主要是用c为主,c++为辅总体感觉:给自己打个7分吧,听天由命等通知。。---------------------------------------------------------------------------职位描述自动驾驶软件开发高级/资深工程师/专家(Linux/C++方向)岗位职责:1、负责自动驾驶相关的新产品软件设计和开发;2、负责自动驾驶相关的应用和算法软件在新软硬件平台上/新车型上的移植和调优;3、与各相关团队协作,共同完成自动驾驶产品工程化落地,负责分析和解决遇到的相关软硬件问题;4、负责现有平台/车型的迭代开发维护。岗位要求:1、本科及以上学历,计算机/软件专业,至少3年以上软件开发经验;2、熟练使用现代C++语言开发(C++11及其以上),熟悉STL并了解其实现原理,能进行多线程编程、网络编程、通信中间件开发;3、熟悉Linux/QNX,并具备在其上的工程构建、开发、问题定位及解决能力;4、责任心强,具备优秀的学习能力、独立分析问题和良好的团队沟通协作能力;5、有基于嵌入式平台的大型应用软件开发经验优先,有自动驾驶产品开发和落地经验优先。
投递小鹏汽车等公司7个岗位
点赞 评论 收藏
分享
评论
8
31
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务