阿里-面经-研发工程师(C/C++)

全程一个半小时。
1、先做个自我介绍
2、你本科参加过那些比赛印象最深的是哪一个,担任的角色,做了哪些工作
3、看你简历上项目就写了现在的毕设,你做过其他的项目吗?
4、说说对c++面向对象的理解?封装继承多态的存在是为了什么、有什么优点吗?
5、说说多态实现原理
6、纯虚函数的作用、为什么要有纯虚函数(他又问,虚函数也可以重定义呀,纯虚函数出现到底是为了什么,他又讲到java的接口)
7、C++类型转换方式有哪些?分别说说。dynatic_cast失败会怎么样?什么时候返回空,什么时候抛出异常
8、空类。编译器会为之生成什么成员?(中间还讨论到:我说默认构造函数只有在编译器需要的时候才会产生。
他问我你什么意思默认函数就是编译器会自动生成的啊?)【难道默认构造函数不是只有编译器需要时才产生吗,哼】
9、说说对虚析构函数的理解?什么时候要把析构函数声明为virtual
10、平常用什么容器?说说常用的容器。vector的底层实现、扩容原理、size、capacity、resize、reserve四个函数
11、map底层实现、unordered_map底层实现?哪个写(插入、删除)快?
各个容器迭代器失效的情况。
12、程序运行出错,抛出异常,怎么调试?用过什么调试工具?gdb调试?(程序运行出错,会生成一个什么call(音译)文件???
面试官说的什么call(音译)文件是什么?)
13、知道什么智能指针?说说shared_ptr实现原理、线程安全不?
14、说说你理解的进程、线程?进程的内存分布?孤儿进程?
15、怎么理解物理内存、逻辑内存?如果中国每个人都有e-mail,把所有人e-mail都存到内存中,存得下吗?(13亿人,每人20字节,估算共多少内存)
16、多线程
17、数组与链表
18、给一个无序数组,求排好序后得每个元素在有序序列中的下标,要求原数组元素顺序不变?
给一个有序数组,从中拿出一个子序列(无序),求其排好序后在原数组的下标
19、一条记录有十个字段,一个文件***十亿条记录,要求把每个字段放到一个文件中,怎么办?

#面经##阿里巴巴##C++工程师##秋招##内推#
全部评论
core文件。 a.     使用gdb编译源文件,记得加上-g b.     打开core dump,这样程序中断的时候可以产生core文件(ulimit –c unlimited) c.       gdb program core 来查看core 文件,其中program 为可执行程序名,core 为生成的core 文件名。
2 回复 分享
发布于 2018-08-31 21:29
core  吧?coredump ?
点赞 回复 分享
发布于 2018-08-31 21:07
19、一条记录有十个字段,一个文件***十亿条记录,要求把每个字段放到一个文件中,怎么办? 这个意思是啥啊。。往数据库靠还是数据结构。。。
点赞 回复 分享
发布于 2018-08-31 23:05
想问问大家怎么学习多线程的?有没有推荐的书?或网站?等
点赞 回复 分享
发布于 2018-08-31 21:33
一半的问题都不会,就是会的问题我感觉也不能流畅的表述出来,心塞塞
点赞 回复 分享
发布于 2018-08-31 21:31
Coredump文件把😂,程序异常退出系统生成的文件
点赞 回复 分享
发布于 2018-08-31 21:15

相关推荐

📍面试公司:联想(Lenovo)🕐面试时间:2025年08月23日💻面试岗位:C++研发工程师❓面试问题:一、现代C++特性与语言演进 (C++11/14/17/20)1.​​右值引用与移动语义​​:解释std::move和std::forward的区别?完美转发是如何实现的?2.​​智能指针进阶​​:std::shared_ptr的线程安全性如何?std::weak_ptr如何解决循环引用?3.​​C++17/20新特性​​:谈谈你对std::optional, std::variant, std::string_view的理解。C++20的Coroutines(协程)有什么优势?4.​​类型推导与模板​​:auto和decltype有什么区别?模板参数包(Parameter Pack)如何展开?二、内存管理新范式1.​​内存池技术​​:如何自己实现一个内存池?2.​​检测与优化​​:除了Valgrind,还有哪些工具(如ASAN、MSAN)可用于检测内存问题?如何重载new和delete来跟踪内存分配?三、并发编程与现代多线程1.​​原子操作与内存模型​​:std::atomic<T>是如何保证原子性的?解释一下内存序(Memory Order):memory_order_relaxed、memory_order_acquire、memory_order_release的区别和应用场景。2.​​无锁编程​​:什么是无锁(Lock-Free)数据结构?尝试实现一个无锁的队列或栈。3.​​协程​​:C++20的协程底层机制是什么?co_await、co_yield、co_return分别做了什么?四、STL容器与算法新特性1.​​新容器​​:std::unordered_map的负载因子和再哈希策略是怎样的?C++23引入了哪些新容器?2.​​算法复杂度与选择​​:std::sort用的是哪种排序算法?什么情况下会退化为O(n²)?如何避免?五、系统设计与性能优化1.​​设计线程安全的LRU缓存​​:要求get和put操作的时间复杂度为O(1),并考虑高并发场景。2.​​零拷贝技术​​:如何在Linux下使用sendfile或splice实现零拷贝文件传输?3.​​高性能日志系统​​:如何设计一个每秒处理千万级日志条目且保证零丢失的采集系统?六、设计模式与架构演进1.​​现代C++下的设计模式​​:如何使用移动语义和智能指针实现单例模式、工厂模式?2.​​分布式系统概念​​:如何理解分布式缓存中的缓存击穿、雪崩和穿透?如何设计一个防护系统?七、手撕代码题目更新1.​​实现一个移动语义优化的字符串类​​(MiniString),要求支持拷贝构造、移动构造、析构。2.​​实现一个简化版的std::shared_ptr​​(MySharedPtr),模拟引用计数。3.​​实现一个线程安全的环形缓冲区(Ring Buffer)​​,支持多生产者和多消费者。🙌面试感想:联想的C++面试很​​现代化和深度化​​。面试官不仅考察传统的语言特性和底层原理,还会深入询问​​C++17/20的新特性、无锁编程、协程、高性能系统设计​​等前沿话题。手撕代码环节的题目综合性更强,常要求实现一个小型的数据结构或系统组件,并考虑线程安全和性能。项目经验部分问得非常细,要求候选人能清晰说明技术选型、性能优化证据链和故障排查路径。整体感觉面试官水平很高,乐于追问,氛围既有挑战性又很专业。
查看19道真题和解析
点赞 评论 收藏
分享
评论
9
149
分享

创作者周榜

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