来源 阿里菜鸟java实习电话面试经,凉凉~!~
https://www.nowcoder.com/discuss/67251?type=2&order=0&pos=7&page=1
去除了java部分的题目
-
用户请求在服务器是一个线程一个请求吗 这个问题搜了下有两种模型,一种是阻塞的一种是非阻塞的。现在一般使用基于IO多路复用的技术,Reactor模式,只需要一个线程或者少量线程,就可以处理大量请求。
-
服务器抗压策略 这个问题就更大了。百度了一下有两点,一个是缓存,一个是分布式。网友回答了消息队列,可以减轻大量并发量突发的情况。
-
很多很多个数,找到前十个 可以使用快排的变体
-
堆排序时间复杂度如何计算? n×log n,就是n次,每次从低向顶出堆要log n次
-
HTTP和TCP 这个不知道问的具体是什么,可能是联系?
-
TCP关闭连接四次挥手,为啥 两次fin+ack,中间插入未发送完的数据。在带有延迟ack的
来源 网易内推(C++/C研发)offer之路
https://www.nowcoder.com/discuss/3038?type=2&order=0&pos=15&page=4
- C++多态性都有哪些? 多态是一种接口多种实现。静态多态和动态多态。静态多态是通过泛型编程实现的,动态多态是通过虚函数实现的。
- 动态绑定是怎么实现的? 静态绑定:编译时绑定,通过对象调用 动态绑定:运行时绑定,通过地址实现 动态绑定是通过虚表实现的。
- 类型转换有哪些? C风格的转换,强制类型转换,隐式类型转换。C++四种类型转换:static_cast,const_cast,dynamic_cost,reinterpret_cost。分别用于内置静态类型转换(int float)、去掉类型的const属性,用于动态类型转换(必须为父子类),重新解释类型而不做实质转换(指针强转)。
- 内存对齐的原则 结构体基本数据类型成员要从成员大小的整数倍开始对齐,结构体作为成员要从最宽的数据类型的整数倍对齐。结构体的大小为内部最大的成员的整数倍对齐。
- 模板是如何实现的? 编译器在遇到模板声明时记住这个模板名称。在调用时根据模板传入的参数类型产生出具体的类型的代码,然后进行编译。
- 指针和const的用法? const类型的指针,指向const类型的指针,指向const类型的const类型的指针。
- 虚函数、纯虚函数、虚函数与析构函数?为什么析构函数要定义成虚函数? http://liaoxl.github.io/blog/20131205/virtual-destructor/ 根据这篇文章所述,意思是如果定义为虚函数并且子类也实现了的话,那么子类的析构函数和父类的析构函数都会调用。
- 内联函数
- const 和 typedef
- 排序算法有哪些?快速排序怎么实现的?最好时间复杂度,平均时间复杂度。 插入、冒泡、堆排序、归并排序、桶排序、希尔排序、快速排序。
- extern “C”有什么用 主要是为了调用C编写的程序。
2017暑期实习C++面经(阿里,网易游戏,腾讯等)
来源:https://www.nowcoder.com/discuss/23512?type=2&order=0&pos=20&page=2
- map由什么实现的?你知道红黑树和AVL树有什么区别吗?为什么像map,set都用红黑树来实现?你有听过skip-list吗?
- 用过vector.reserve()吗,vector的数组是怎么增长的?
- map-reduce了解吗?
- linux熟悉吗?目录权限,如644代表什么,目录如果有可执行权限代表什么?
- 平时有使用vi吗?一般的linux命令熟悉吗?(如awk,grep等) 有用过gdb的调试吗?
- TCP/UDP的区别,如何实现拥塞控制,如何实现可靠传输?UDP的应用? 可靠/不可靠 字节流/报文 连接/非连接 开销大/开销小 有拥塞控制/无拥塞控制 全双工/单工 拥塞控制目的是为了防止发送的数据包超出了网络的承载能力,涉及到所有的主机和路由器。拥塞控制认为丢包是因为数据包超出了网络的承载能力,所以在发送数据包的,需要慢开始,不断地达到网络的承载能力,将拥塞窗口以指数的规律增长到慢开始门限,超出门限后,如果继续增大数据包的发送量,认为网络将会出现拥塞,所以进入拥塞避免状态,该阶段以线性的增长规模扩大拥塞窗口,直到拥塞发生。如果某个数据包在超时计时器已到仍然没有收到对方的ACK,则认为网络中出现了拥塞,此时将慢开始门限设置为当前窗口的一半,并执行慢开始算法。如果收到了对方的三个重复的确认报文,则认为对方尚未收到丢失的报文,则尽早重传未被确认的报文,而不是等到超时计时器到时时才重传,这就是快速重传。如果出现了快速重传,则不执行慢开始算法,而是将拥塞窗口设置为慢开始门限,然后执行拥塞避免,这就是快恢复。
作者:Simon_ 链接:https://www.nowcoder.com/discuss/23512?type=2&order=0&pos=20&page=2 来源:牛客网
总结:
我觉得阿里更注重项目和分布式,多线程方面的知识。网易游戏的话更注重算法和C++吧。腾讯的话就什么都问,从C++的内存结构,RTTI,到网络编程,到智力题的算法实现。同学们可以根据自己要投的公司再好好准备准备。与君共勉。
准备实习之前刷过的书籍有《C++ primer》, 《深度探索C++对象模型》,《Effective C++》,《STL源码解析》,《剑指offer》还有就是一些网络和操作系统的书。刷了leetcode前120的题 目。
给未来找C++研发实习的学弟学妹的一些建议:
- 最好在找实习之前,先把C++ primer刷几遍,不懂的可以做个笔记,下次再看。当你看《对象模型》的时候,你会发现Primer中看不懂的知识都能在《对象模型》中迎刃而解。(关于Primer的学习方法我是参照https://www.zhihu.com/question/32087709中的第一个回答来做的)
- 《STL源码解析》最好也看看。面试官很喜欢问vector,map等的底层实现或者动态增长,如果不看书,关靠看博客和面经的话可能理解起来比较困难。
- 剑指offer是大部分公司一面的算法题,我觉得最好把每个题目都看懂吧。leetcode的话前100题确实很经典,二分查找,hash,动态规划,二叉树等的知识也可以通过刷题来巩固。
- 网络的话肯定是TCP/IP详解 卷1,有时间的话可以再看看Unix网络编程。时间更充裕的话最好刷一刷陈硕的《linux多线程服务器编程》,对多线程的知识会有一个了解。
- 最后一个建议就是越早准备越好,投递简历、面试期间只适合整理牛客网上的面经以及自己的面经,补缺补漏。毕竟面试题都是随机的,想要在面试中表现好一些,最好还是平时多积累。
C/C++后台研发 腾讯实习春招一面 凉凉~
https://www.nowcoder.com/discuss/68508?type=0&order=0&pos=8&page=0
- vector底层的实现. 这里我说的比较多,所以他问到了insert具体做里那些事情. resize函数调用的是什么样. 扩容的情况.
- 进程间通信机制 管道(pipe),有名管道(FIFO) 信号(signal) 消息队列 共享内存 信号量 套接字(socket)
阿里巴巴菜鸟网络二面
http://blog.csdn.net/caishenfans/article/details/44496581
-
fill和memset的区别 fill 是stl算法,会调用拷贝构造函数,如果是基础类型应该会直接按位复制。memset是c算法,就是一个字节一个字节拷贝到原始指针指向的位置。
-
C++内存管理方法 RAII全称为Resource Acquisition Is Initialization 利用栈展开过程栈上对象的析构函数将被 自动调用的保证,从而正确地释放先前获取的资源。RAII只有在栈展开正常执行的前提下才能正常工作。函数调用和正常的C++异常处理流程(异常处于 try-catch块)都存在栈展开。
-
智能指针的实现 当有另外一个智能指针对当前智能指针进行拷贝时,引用计数器加1。 当两个智能指针进行赋值操作时,左边的指针指向的对象引用计数减1,右边的加1。 析构时,同样引用计数减1。 当引用计数为0时,对象被回收。 重新定义了一组operator :->指针,返回原始指针的指针。解引用*T,返回原始指针的解引用。
阿里实习电话面试经验,一个多小时
https://www.nowcoder.com/discuss/3836
- 什么是二叉平衡树,如何插入节点,删除节点,说出关键步骤。
学生党如何拿到阿里技术offer:《阿里实习生面试经验(成功)》
https://yq.aliyun.com/articles/6395
阿里C++研发实习二面和三面面经(已跪)
https://www.nowcoder.com/discuss/27801?type=2&order=3&pos=55&page=1
实习面试总结
https://www.nowcoder.com/discuss/25302?type=2&order=3&pos=190&page=1
知乎牛客总结
【阿里、腾讯、头条】等12家企业【C++方向】30场面试经验