大家好,我是对白。
今天给大家介绍一位我的朋友,他是中科大软件学院的硕士,在去年秋招中斩获了多个互联网大厂的offer,后来他将自己从实习到秋招参加的一百多轮面试进行了总结,希望对即将找工作的大家有所帮助,以下为正文。
本人为中科大软件学院硕士,众所周知,中科大的软件学院提供了大量的外出实习的机会,所以在研一研二的时间内,有幸积累了丰富的面试经验,最后收获了一些还不错的offer,今天就把本人经历拿出来和大家分享一下吧~
阶段一:2020年春--日常实习
1. 阿里巴巴
一面:
1. 进程与线程,线程怎么共享数据的?
2. 指令流水线(顺序与乱序);
3. C++11新特性,智能指针,左值与右值;
4. 网络模型OSI、TCP/IP,ARP协议?
5. 排序算法的比较;
6. 代码题:二叉树的遍历方式;
7. 内存中的堆和栈?
8. 项目,代码调优(循环展开,goto禁用,行优先访存,循环内定义外移)
二面:
1. 内核同步:原子操作、自旋锁、读写锁、信号量(计数信号量、二值信号量)、屏障(barrier)分别的实现原理与应用机制;
2. 操作系统相关的项目经验有吗?平时写过什么代码?
三面:
1. 介绍一下区块链系统的工作原理,实践时候的难点(默克尔树)?
2 .对称加密与非对称加密,http与https的区别?
3. Https加密怎么实现的?
4 .C++中面向对象的三大特点(封装、继承、多态),多态的实现方式?
5. Go与C++的区别,Go怎么实现内存回收的?
6. Malloc与new的区别,数据库中第一范式与第二范式;
结果:
挂了
2. 英伟达开发
一面:
1. 项目的目的;
2. 指针操作:指针越界的危害,野指针的危害?
3. 为什么指针越界在编译的时候不会报错,在运行的时候会报段错误?
4. 操作系统怎么判断的?
5. C++的特点,面向对象的优点,举例说明?
6. 函数调用的特点,如果一个指针赋值为函数,那么这个指针获取的是函数的值还是返回值?
7. 代码题:二叉树的层序遍历;
8. char * f(){ return "Hello world"; } void main(){ char * p = f(); p[0] = 'h'; }是否合法?
结果:
挂了
3. 腾讯后台开发
一面:
1. 聊了项目,数据库里面group by和order的执行顺序;
2. 网络中信息传递的顺序,同网段、不同网段;
3. 代码题:手撕二分查找;
二面:
1. C++ inline函数的作用;
2. 函数传参入栈的顺序;
3. 项目经历(个人在项目中的角色与遇到的困难);
4. 死锁与死循环,如何判断是死锁还是死循环;
5. 代码题:两个相交链表的交点;
三面:
1. 做一个新的编程语言的意义?
3. 线程与进程的区别,线程同步(自旋锁、读写锁、信号量(二值信号量、计数信号量)、原子操作、barrier等等);
4. 软件开发应该具有的特性(低耦合高内聚),敏捷开发?
5. 代码题一:n个节点的二叉树的最大最小深度;
6. 代码题二:平衡二叉树的删除操作的时间复杂度;
7. 代码题三:动态规划(爬楼梯);
结果:
通过
4. 百度贴吧
一面:
1. C语言动态内存分配的几种方式与比较(malloc,calloc,realloc);
2. malloc的特点与底层实现,malloc与new的区别;
3. TCP与UDP的比较,进程通信的方式,进程与线程的比较;
4. 为什么网络层已经有了差错控制,传输层还要再来一遍?
5. 快排与堆排的应用场景,归并排序的空间复杂度;
6. 代码题一:判断回文串;
7. 代码题二:数组中只出现一次的数字(hash、排序、异或);
8. 代码题三:数组中的两数相加之和(暴力法、二分法)以及时间复杂度;
9. 代码题四:链表中倒数第k个元素;
10. 代码题五:链表是否有环?
二面:
1. C++多态怎么实现的?
2. 虚表存放的位置;虚表的大小?
3. 四种类型转换的区别,class与struct的区别;
4. 数据库:主键与外键、数据库的锁(读写锁、乐观悲观锁);
5. 操作系统:进程与线程、同步I/O,异步I/O;
6. 内核态与进程态,系统调用时操作系统发生的事情;
7. 网络:画图--TCP三次握手、四次挥手,四次挥手中的wait-time出现在哪里,如何避免wait-time造成的服务端空等?
8. 代码题一:链表逆置(两种方法:指针改变方向,头插法);
9. 代码题二:一个数组中找出min和max的方法(排序(nlogn)、遍历(n)、堆排序的重建堆(logn?))
结果:
挂了
5. SmartX
一面:
1. 代码题一:剑指offer中二维数组寻值,两种方法(暴力搜索、从右上角逐步逼近);
2. 堆排序的思想,时间复杂度、怎么建堆?如果是二叉树不是数组怎么建堆?3. 快排的时间复杂度?
4. 数据库中删除数据但保留表结构用什么?
5. TCP为什么四次挥手?
6. ARP是哪一层的协议?
7. Linux命令:一个文件有多少行?
8. 查看内存和cpu,排序算法的稳定性是什么?
结果:
挂了
6. 美团
笔试:
1、代码题一:两个数组比较最大三个数字之和;
2、代码题二:删除一个数字之后的最大连续上升子序列;
3、代码题三:背包问题;
4、代码题四:无向图;
一面:
1. 介绍一下项目;
2. http与https的差别,公私钥加密解密的过程?
3. 数据库里面的三个范式,索引是什么?;
4. Linux用过什么命令?(free、df、ping、netstat等等),top命令干嘛的?
5. 数据库里面的“脏读”与“幻读”;
6. 锁机制有哪些?线程安全是什么?
7. TCP三次握手的原理,为什么二次握手之后要有第三次?
8. 让你设计一个登录系统?密码在数据库里面怎么存(MD5加密?)
9. 怎么判断用户超时了需要重新登录?(访问的时间戳判断),
10. 代码题一:生产者消费者伪代码(如果只有一个生产者、消费者,需要加锁吗?(要判断生产者和消费者的操作是否为原子性的));
11. 代码题二:链表有环;
12. 代码题三:二进制转换为十进制;
结果:
挂了
7. 快手
一面:
1. 代码题一:去除字符串里面的空格(不能使用string,空间复杂度为O(1));2. 如何实现C++里面的string?
3. 读取字符串有哪些方式?
4. C++函数为什么只有一个返回值,怎么返回的?
5. 函数参数保存在哪里?怎么入栈?有没有办法返回多个返回值?
6. float型如何判断是否为0,0.0和0的区别?整型和浮点型比特存放的区别(IEEE754);
7. int a = 10, !!a = ?;
8. A、B间有TCP连接,如果B拔网线了,会怎么样?四次挥手的过程?为什么要四次挥手;怎么判断连接超时?
9. AWK是啥,程序运行很慢怎么排错?
10. Mysql中索引怎么实现的?有什么用?
结果:
挂了
8. 网易互娱
一面:
1. 聊了聊项目;
2. C++的多态如何实现的?虚函数的作用?析构函数可以是虚函数嘛?虚析构函数的作用(可以避免内存泄漏),举个例子?
3. 虚函数表存在哪里?一个类一个还是一个对象一个?
4. 编译器会构造几个构造函数?
5. STL里面:vector、set、map是用什么数据结构实现的?
6. Push_back的底层实现,什么时候会resize?
7. Move语义了解过吗?哈希表避免冲突的方式?
8. 举例说明一下链表法?从cpp程序到exe程序都需要经历那些步骤?
9. TCP与UDP的区别?讲一下拥塞控制?讲一下进程与线程的区别?讲一下多路复用;
10. 代码题一:求数组中前K大的数字(大顶堆);
11. 代码题二:最大的正方形(暴力、动规)
结果:
通过
9. DELL
一面:
1. 为什么要设计一种基于实时系统的编程语言?
2. 什么是面向对象?什么是多态,介绍一下常见的多态(重载、继承、虚函数);
3. STL用过什么?(vector、queue、stack);
4. 介绍一下queue和stack常用方法;
5. 如何实现一个最小栈?(辅助栈);C++中堆和栈的区别?
6. 常见的排序算法有哪些?介绍一下堆排和快排,两者适用的环境?
7. Linux系统中进程与线程的区别?线程间如何通信?
8. 什么是死锁?
9. Http中get与post的区别,设计模式会吗?
10. cookie是什么?
11. 你实习的优势是什么?(学习能力ok、实习时间长)
结果:
通过
10. 华为操作系统(哥德尔实验室)
一面:
1. 你对车载os有何想法?如何保证os的实时性?说一下race condition;
2. 了解无锁编程嘛?了解物联网平台吗?
3. 说一个你比较熟悉的内核模块(进程调度);
4. 对于实时进程来说,FIFO与RR调度哪个优先级最高?
5. 说一下TCP/IP模型,每层都有哪些协议?每种协议都是干嘛的?(ARP,RIP,OSPF,TCP、UDP,HTTP,DNS);
6. 代码题一:十进制转换成十六进制,用补码表示;
7. 代码题二:用随机数函数random(),求圆周率;
8. 代码题三:二分法求log2n;
二面:
1. 车载os需要哪些特性?和你做的项目有何关系?
2. 为什么实时系统要选择C语言?
3. 区块链在无人驾驶系统中可以有应用吗?
4. 操作系统熟嘛?说一个了解比较多的(我说了内核同步);
5. 原子操作会对cache的命中率造成损失吗?自旋锁保证了什么特性?
6. 研究生写过多少代码?以后怎么规划职业发展的?
7. 看过什么书?有什么感悟?平时会怎么学习?有没有写过博客?
8. 反问环节:华为的实习生培养机制?支持长期实习吗?
结果:
通过
11. 携程云计算
一面:
1. 介绍一下PCA算法,区块链的核心是什么?
2. C/C++与java的区别,C++中面向对象的特性,并举例说明;
3. 虚函数与纯虚函数?
4. 代码题一:不许使用“==”和“if”,统计一个数组中“7”出现的次数(哈希表或者双指针);
5. 二分查找;
结果:
挂了
12. 字节跳动
一面:
1. 比特币中的挖矿是指什么?
2. 怎么防止重入攻击?共识机制?
3. C++:C++11的新特性(智能指针、vector);
4. move用过吗?动态库与静态库的差别、内存对齐及其原因;
5. 如果一块较大的数据放入内存应该怎么办?(虚存/分块);
6. 代码题一:大于N的最小非重复数;
二面:
1. 聊一聊项目;
2. IP网络报文格式?TTL含义?Https与http差别?
3. 三种数据库范式是啥,传递依赖有什么不好?(答了一个数据冗余,还有一个不会)
4. 死锁怎么形成的?代码优化的方法?
5. 代码题一:已知前序中序求二叉树;数组的zigzag(a0 <= a1,a1 >= a1,a2 <= a3 .....)
结果:
挂了
技术交流群邀请函
已建立CV/NLP/推荐系统/多模态/内推求职等交流群!想要进交流群学习的同学,可以直接扫下方二维码进群。
加的时候备注一下:昵称+学校/公司。群里聚集了很多学术界和工业界大佬,欢迎一起交流算法心得,日常还可以唠嗑~
后台回复关键词【人工智能】
领取整理最全面的人工智能学习礼包
后台回复关键词【对比学习】
获取最新对比学习
在各大顶会上的论文合集!
往期精彩回顾
你好,我是对白,清华计算机硕士毕业,现大厂算法工程师,拿过8家大厂算法岗SSP offer(含特殊计划),薪资40+W-80+W不等。
高中荣获全国数学和化学竞赛二等奖。
本科独立创业五年,两家公司创始人,拿过三百多万元融资(已到账),项目入选南京321高层次创业人才引进计划。创业做过无人机、机器人和互联网教育,保研清华后退居股东。
我每周至少更新三篇原创,分享人工智能前沿算法、创业心得和人生感悟。我正在努力实现人生中的第二个小目标,上方关注后可以加我微信交流。
期待你的关注,我们一起悄悄拔尖,惊艳所有~
您的“点赞/在看/分享”是我坚持的最大动力!
坚持不易,卖萌打滚求鼓励 (ฅ>ω<*ฅ)
分享
收藏
点赞
在看