这里主要介绍一下面试问题和笔试的编程题部分,选择题不再赘述,面经内容以时间线进行阐述
整个春招总体的感觉就是两个字:奇妙
由于笔试的题目大多记不太清,等后续有官方发布题目会进行更新题解
为使文章简洁,笔试题和面试的算法题思路会在未来以链接形式加入,面试基础题的答案详见我面试题目总结
祝愿大家未来都能找到理想工作!
整体总结:
算法 + 基础 + 理解
算法
个人主要以Acwing为基础平台,做算法的基本理解学习
然后Leetcode为辅助主要是练习核心代码模式
最后codetop做一些各大公司热频题的练习。
基础
计算机网络
操作系统
C++ 和 STL
数据库
数据结构与算法
设计模式
可移步我自己整理的面试知识点
可能有点乱后续有时间会再整合整理一下的
理解
即一些场景题和代码题的理解和手撕,可参考牛客面经进行练习,最好自己准备好自己的答案
涂鸦智能(C++开发实习生)(口头offer已拒)
没有笔试阶段
1面
- 介绍项目
- 线程池的原理和其中阻塞队列的具体实现
- TCP粘包问题的解决
- TCP三次握手,四次挥手
- TCP可靠性
- 针对项目Object对象安全检查问题
- C++11特性
- 左值引用的作用
2面
- 项目,有一些很虚的问题,比如最有成就感的,最困难的,执行力最强的,问了好几个类似的
- hashmap 和 map 具体实现,问的很细节
- 大数据情况下两者的优劣点
- socket网络编程的阻塞问题
- 介绍回调函数指针数组的时候还问了这样做的具体好处,还有没有其他方法实现类似功能
3面
- MQTT和NB-IOT协议的了解
- 自己做过的嵌入式项目
- 剩下的就随便聊聊,介绍毕设的时候还问了一下协同过滤
HR面
- 随便聊了很多
- 物联网学过什么
- 大学参加什么编程比赛
- 成绩怎么样
- 面试时间等等
Vivo(春招)(笔试凉)
笔试
1.传递依赖
2.回文字符串问题
3.寻宝
美团(春招)(美团支付部门)(二面凉)
笔试
1.对称矩阵
2.选择出其中最长回文的数字
3.滑动窗口求众数
4.节点选择类似题,多了输出方案
5.无向图求最长的递减路线
面试(一轮)
基础知识题 + 场景题目
1.short int long各占几个字节,会有不一样的情况嘛(机器位数)
2.线程进程区别
3.死锁的条件,死锁避免什么方法,银行家算法讲一讲
4.临界区,皮特森算法
5.进程同步和互斥
6.进程通信方式,不同机器间进程通信用什么
7.HTTP在哪层?HTTP状态码了解哪些
8.TCPUDP在哪层,TCP和UDP区别,应用场景(列举了DNS和HTTP3.0)
9.Linux怎么查询用了TCP还是UDP
10.cookie和session的区别,为什么不能直接将session放到cookie上
11.hash冲突解决方式
12.hash开链法占满空间了怎么办
13.数据结构都了解哪些(链表,栈,队列,数据结构)
14.topK问题用什么数据结构(堆,或者分桶)
15.MySQL事务的四大特性
16.MySQL隔离级别,如何实现
17.联合索引的机制
笔试题
非递归实现树的中序遍历
用的栈写的
反问?有什么更好方法,莫尔斯遍历,虽然LC写过一次但是忘了
智力题
一根金条只能分两次,给工人7天每天都一样的一根金条该怎么分,(分成1/7, 2/7, 4/7)
面试(二轮)(凉了hhhh)
自我感觉相关的知识都答上来了,但是呢感觉美团主要都是JAVA,看面试官过一会问JAVA而我不会的无可奈何的面容。
自我复盘就可能是技术栈不符合吧,也是面试经验不足吧,毕竟才第三次,下一次会更主动把面试官引向自己熟悉的地方,否则真的会死的很惨,待我JAVA够好再来吧😂
算法题
链表相加,实现反转链表,加法函数,链表的结构都写出来
基础题(JAVA问题就不写了吧。。伤愁)
1.数据库隔离级别,可重复读是怎么实现
2.如果你在可重复读的
3.数据库中的锁都了解哪些
4.锁机制是怎么去实现的呢,可重入锁有了解嘛,是怎么实现的(这个问题实在不会)
5.C++你都了解哪些呢:说了STL,智能指针,内存分配等等,(以为终于有说很多的机会面试官就打断问我JAVA是怎么垃圾回收的,不会)
6.线程安全你是怎么考虑的,自旋锁你觉得是怎么实现的呢(又问到盲区了)
声网(春招)(笔试凉)
笔试
1.最长前缀共同字符串反求字符串
2.区间内GCD最大值
Shopee (春招)(笔试凉)
笔试 (输入输出坑有点大,吸取教训)
均为Leetcode原题,但是呢,输入输出比较坑,这里也是长见识了,会详细进行总结,再来一次定会卷土重来
1.最小路径和
2.版本号对比
3.二叉树层序遍历
Aftership (春招)(笔试凉)
笔试 题目都做出来还没了我真是傻了
笔试完后均为牛客原题:
1.单调栈进阶结构
2.0左边必有1的二进制字符串数量
地平线机器人(春招)(已offer)
无笔试
一面
面试题
1.C++和C的区别
2.C++的内存分布,如果是未初始化的放在哪里
3.指针和数组的区别,C++的引用,引用可以初始化为null嘛
4.const const类型的指针有哪些
5.智能指针说一下
6.继承中C 支持多继承嘛,有哪些权限(C和C有区别嘛),子类可以去更改父类的权限嘛
7.进程线程区别,怎样用三个线程依次遍历一个序列
8.你了解哪些锁,间隙锁知道嘛
9.C和C++中对锁的支持,如何创建一个进程,Linux下函数
10.并发和并行,是如何实现并发的
11.游戏服务器是用线程还是用进程
12.HTTP在哪层,有哪些状态码
13.TCPUDP可靠性对比
14.为什么三次握手而不是两次,为什么是四次挥手而不是三次
15.输入网页后都会控制台都会收到哪些东西
16.GET和POST的区别
17.IO复用都了解哪些
18.Mysql索引的底层结构,为什么要用B+树,不用索引会怎么样
19.数据库引擎的区别
20.数据库事务的特性
21.数据库的隔离级别,预防了哪些问题
22.是怎么解析SQL语句的
23.数据库每次都要创立一个连接嘛,连接池的连接数是怎么确定的
24.Mysql的一些优化,我说索引 + 缓存 然后就问我缓存,哭了,疯狂给自己挖坑
25.缓存结构怎么确定,用过哪些缓存
26.Redis的数据类型和一些原理
27.现实高并发是怎么实现的
28.高并发下是如何对Redis加锁控制的
29.平时学的东西大豆在哪学的
手撕算法题
滑动窗口下的最大值,给出函数讲清原理即可
反问:
技术栈,对自己的评价等
2面
基础题:
1.C++ vector解释一下
2.C++ hashmap解释一下,开链法
3.C++ 实际应用中hash表的长度是怎么确定的
4.Redis的布隆过滤器原理和其长度是怎么来确定的
5.Redis的数据结构都有哪些?SDS的一些原理
6.Redis的HashMAP的长度怎么确定,set和get方法
7.Redis的跳表结构,层数是怎么确定的
8.跳表里查询和插入的时间复杂度
9.MySQL里事务的死锁发生条件
10.MySQL里自动主键选取的方式的原理
11.HTTP里的报文结构,getpost,对称加密和非对称加密的区别,非对称加密条件下公钥存在哪里,私钥存在哪里
12.分布式系统你会考虑哪些问题,怎么设计呢
算法题
1.两个正序数组的中位数,不断让我去思考最优化解(O(log(n + m))
2.找出数组重复的那个数
三面:
聊项目巴拉巴拉,聊一些具体实现
算法题:
两个数组求交集
然后再写出n个数组求交集
字节跳动(客户端已接受offer)
服务端工程师,电商物流 无笔试(凉凉)
一面
项目提答得不太好,有些问题陷入了瓶颈,大多都答了,算法题也写出来了,但还是有点凉hhhh因为面试官看起来不太面善,等结果
基础题:
1.项目里面断点续传的详细实现,
2.TOPK问题,归并排序和堆的思想,时间复杂度分析,空间复杂度(感觉这里我说nlogn,事后才感觉应该是n + klogk,我当时一直再纠结堆排序)
3.IO多路复用方法三者的区分
4.TCP粘包的解决
5.HTTP的状态码
6.HTTP CSRF攻击
7.MySQL 索引的底层实现,覆盖索引
8.联合索引的机制
9.explain下的参数
10.隔离级别,MVCC的实现
11.电商网站秒杀系统你会如何去做
12.布隆过滤器
13.Redis缓存你这边会怎么做
算法题目:
两个字符串的最长公共字符串,把他输出出来
二面
一开始直接整了个算法题,虽然很简单但是具体研究讨论了半个小时
算法题
1.两数之和的拓展题,无序不重复数组下乘机为target的两个数的索引(不断优化,要记得考虑取整,除数为0的情况)
2.在100G的无序不重复数组下考虑这个问题,怎么加快IO操作(树的结构,操作系统方面,hashmap,布隆过滤器)
基础题
1.智能指针的问题,又用什么来解决
2.unordered_map 和 map的区别,红黑树和哈希表的应用场景都有哪些,时间复杂度分析一下
3.堆结构是什么,是如何去调整堆结构的
4.进程和线程的区别,进程如何保证隔离性,线程共享哪些
5.进程通信的方式,不同机器用什么
6.虚拟内存是什么,逻辑地址是怎么映射到物理地址的
3面
面试最后,灵魂拷问:你觉得你能过嘛? 我。。。。觉得我还可以。。(毕竟没啥没答上的呀)
面试官说数据库要多用一下,项目实战经验感觉有点少,算法题考虑的也少一点,这。。。好方呀,因为听说字节三面刷人贼厉害。。。
许愿HR面啊啊啊啊啊啊
基础题
1.进程和线程区别,多进程和多线程区别,多线程有哪些经历
2.虚拟内存和共享内存有什么区别
3.地址映射有哪些算法
4.进程通信有哪些方式
5.线程同步有哪些方式,临界区算法了解哪些,信号量模型了解哪些
6.死锁的条件,怎么破坏,怎么预防
7.TCP的四次挥手过程,CLOSED_WAIT 和 TIME_WAIT是什么
8.HTTP的状态码
9.网络上攻击都有哪些
10.redis你了解哪些说一说
算法题
圆环回原点问题,DP问题,但忘记考虑奇数下可以直接特判了
客户端工程师(ios方向)(住小帮部门)(技术面已通过等后续)
当时选客户端,说的选的是Android方向,但可能因为自己技术栈写的C++所以被调到了IOS岗位
一面:
感觉面试官提出一个大问题后面都会详细的问,感觉蛮专业且一语中的(一下戳中盲区hhhh)不过不会也都会说没关系换下一个话题。
其实有很多问题的答案后续也都没咋找到确切答案,也希望大家评论分享自己的答案hhhh
基础题:
1.微信小程序上好友列表是怎么实现的
2.ListView和RecyleView的区别是怎样的
3.假如我从数据库中拿出100个消息,你要怎么实现在消息列表上展示,怎么加载的
4.多线程是怎么去实现的
5.操作系统是怎么管理内存的
6.操作系统是怎么做地址映射的
7.虚拟内存作用,段表页表快表有啥区分,这些表存储在哪里
8.C中结构体是个啥? 和Class有啥区别 编译器通过什么来定位其中的成员变量
9.sizeof(struct)是怎么计算的,为什么要内存对齐
10.C中链表和数组两者性能上有什么区分
11.C++智能指针如何实现
12.C++中虚函数是怎么实现的,多继承下虚表有什么区别
13.C++中原子类型内部是如何实现的?底层是汇编那汇编if语句要怎么表示呢
14.C编译过程,可执行文件后缀名是什么,链接是个怎样的过程
15.C中锁都有哪些,递归锁是什么,死锁又是什么
16.HTTPS协议的流程是什么?证书里面都有什么?怎么验证签名的一致性
17.一百个数你将如何寻找中位数
算法题:
本来是一个二叉搜索树找节点间差的最小值,但可能面试官见前面问的我快自闭了,然后就说换一道:链表两两节点互换
然后见又过了一分钟见我还没动手就说你就写个反转链表说自己要开会hhhh
二面:
二面面试官也很好,很温柔hhhhh
基础题问题:
1.Java和C你觉得有什么区分
2.C++指针和引用有什么区别,函数内可以返回一个局部变量的引用嘛
3.手写一个单例模式(加锁管理啥的) C中怎么保证类不被实例化
4.C++构造函数和析构函数可以为虚函数嘛
5.内联和define有什么区别
6.this指针你是怎么理解的
7.TCP的拥塞控制,有做过相关实现嘛?
8.Socket编程的流程,怎么选择是用UDP和TCP
9.除了Socket套接字,进程之间还有哪些通信方式。
10.讲讲STL的数据结构吧,Redis的数据结构有了解嘛
算法题:
1.二叉树完全性检验
2.一个数组只有两个出现一次,其余都出现两次,怎么把他们找出来
三面:
同样是一个很好的小哥哥,还给了我很多对客户端未来发展的看法和规划
基础题:
1.项目经历选一个你最感兴趣的讲一讲其具体实现巴拉巴拉好久
2.然后又聊了会学校团队合作的一些经历和感触,主要讲了讲当初数学建模的血泪史hh
3.设计模式了解那些具体讲讲,有什么好处
4.设计模式几大原则讲一讲
5.输入一个url网址会发生什么具体流程说说,然后就具体说了写TCP握手二次可不可以,挥手三次可不可以,CLOSE_WAIT的作用巴拉巴拉,HTTP2.0有哪些优势,QUIC又是什么
6.前端解析渲染的流程有了解过嘛
7.git命令说几个,git rebase 和 git merge区分
8.linux命令说几个
算法题:
给你一个字符串输出其全排列(不允许出现重复排列)
创新奇智(C++ 开发实习生)(一面凉)
QT答得有点炸hhhh,QT没准备多少,许愿好的结果吧!!!
一开始发了一个邮件做了几个代码题:
算法题:
手写strcpy
手写类型转换函数
用ABC三个线程依次打印123
项目题:
1.QT信号与槽的机制,多个信号对应同一个槽,槽是怎么识别的, 一个信号对应多个槽,是怎么控制执行顺序的
2.有没有自定义实现的槽函数或者信号类
3.QT盒子模型
4.QT样式表和qml
5.QT源码有没有读过
6.QT都用了哪些控件,怎么去实现
7.QT注册的流程是怎样的
8.QT服务器数据库是怎么建表的
9.QT摄像头部分是怎么实现的
基础题
1.C++三大特性
2.C++继承下 相关权限的一些问题
3.多态如何实现,虚函数是如何实现
4.虚函数和纯虚函数有什么区别
5.C++ 引用 和 指针的区别,野指针和悬空指针分别是什么
6.static关键字的作用,平时项目用的多嘛
7.STL库中的数据结构,STL的内存管理分配
8.STL的内存空间分配问题
9.C++智能指针,循环引用问题,share_ptr的内部实现
10.C++原子操作是什么
11.进程和线程的区别,线程独享的有哪些内容呢
12.并发有哪些实现方式,临界区皮特森算法,除了加锁保证互斥还有什么(条件变量)
13.三个线程依次打印序列的问题
14.虚拟内存的概念和作用,为什么要用虚拟内存,虚拟内存通过什么进行映射
15.LRU的概念
16.数据库事务的概念和特性
17.C++ 存储区
18.C++ 编译过程
19.动态链接和静态链接的区分,除了加载上还有什么区别
阿里巴巴(智能云引擎部门)(二面凉)
笔试
蜡烛燃烧求期望
交换相同位置数让两个序列相等的最小操作数
一面
今天晚上面试状态出奇的差,今天一天状态也差的出奇。。。应该睡会觉的。。算法呀,我对不起你。。。
基础题
C++11新特性 智能指针,右值引用balabala
C++空类有什么特点
C++指针和引用有什么区别
C++const 和 define 的区分
C++拷贝构造函数
C++内存分配函数有哪些
线程和进程的区分
线程是如何保持同步的
进程是如何保证隔离性的
虚拟内存是怎么映射到物理内存的,有哪些方法
算法题
判断两个链表是否有交点,有环又怎么判断
层序遍历二叉树
二面
感觉没问什么基础题,两个场景题目讨论了好久
场景题
大文件断点续传怎么实现,文件如果发生更新和删除又该怎么处理
在线搜索的推荐功能是怎么实现的,性能要靠什么去提升呢
算法题
链表中随机选取K个节点,蓄水池抽样算法(LC 382)
题目写出来了,但也是随便写的,不知道对不对,面试官也没回复什么
面试官很好,一直在哪里说没关系hhhhh
深信服科技
笔试 (感觉是到今天为止笔试难度最大的一次,而且笔的快睡着了。。。。)
四则运算最大值
屏幕光标
哥,客户端工程师工作咋样,哪些岗位能专心搞技术的
感谢分享