渣硕一枚,春招投了很多简历,通过面试也学到和很多东西,分享一下面经。
阿里电面
项目,主题模型
一个数据流,只能访问一次,如何保证访问每个数据的频率相同
c++11 future和promise
epoll,libev优点
构造函数能不能重写(没听清要问什么)
面向对象的优点:更易维护,增加代码的重用
大文本如何排序
最优二叉树(我说数据结构比较熟,他说那我考你一个最优二叉树。没答出来,以为是排序二叉树。。如果问我哈夫曼树我就会了。。)
栈和队列
栈空间,堆空间,静态区
栈区:有编译器自动分配释放,堆区:由程序员分配释放
静态区:全局变量和未初始化的静态变量
kmeans
mongodb了解吗?
linux如何扩大分区
之后探讨了一下今后发展方向,我说研究和工程比较偏工程,他好像不怎么满意的样子,已挂。
腾讯电面(没内推,被捞起来了):
map用的是红黑树,和AVL树的区别
map插入和删除需要注意什么
mongodb 和 mysql 差别
IO多路复用方式的区别
如何查看函数所占用的内存
gdb如何debug
python数据处理库,numpy和pandas
C++多态是怎么实现的,哪些函数不能是虚函数(构造函数,静态函数,inline函数)
25u-50结果是多少,u代表unsigned
malloc(0)返回什么: 如果请求的长度为0,则标准C语言函数返回一个null指针或不能用于访问对象的非null指针。
回复等通知,不过我感觉挂了,微信里面也查不到状态。
头条视频面(3月31号):
一面:
项目
mongodb,mysql,redis
redis中hash的结构
签到的表设计
flask,sqlalchemy
mongodb,mysql, redis的不同点
b+树,存储方式
https和http的不同
http返回码
查找最长回文串(可以动态规划)
https://blog.csdn.net/shineboyxxb/article/details/52079360
我写了个暴力,给我过了
二面:
项目
mysql的引擎,区别(myisam, innodb)
mysql,mongodb各种索引是什么,区别
多进程和多线程的不同
多进程和多线程的同步
静态变量什么时候初始化
mysql四种隔离状态
MVCC
[0, n), n个数,范围[0, n-1], 求是否有重复方法
求第k大的数的方法以及各自的复杂度
当有相同元素时,求第k大的元素的方法(类似快排,手撕)
三面:
项目
什么时候会发生segmentfault
ip地址有什么用,ip地址和mac地址
系统中断是什么,用户态和内核态的区别
给你一个数组,再给你几对数,这几对数只能够同时出现或者不同时出现,求拿出k个数的可能性(true or false)(手撕,dfs标号+dp)
官网状态还在面试中,估计还是备胎,基础答的不够好,但是还好代码都写出来了。
酷家乐(现场面):
一面:
项目
实现一个买票系统:实现买票,退票,检票。给一个小时,手撕,文件流+map搞一下就行了,API之类的可以百度。
二面:
项目
数据流,如何获取中位数,复杂度
一到一百万的素数,怎么快速求
有一堆数,再给你很多对数,每对数都在同一个组,求一共有多少组数
有很多蜡烛,每根蜡烛1个小时,求15分钟怎么计时
三面:
数据库mongodb和mysql的不同
innodb的4种隔离方式
索引相关的东西
如何设计一个分布式配置系统,更新配置之后1秒钟内能够同步所有客户端(这个答的不太好,因为分布式基础比较薄弱)
四面:
家常
已拿offer,酷家乐面试体验是最好的,而且公司环境不错,很看好公司的发展。不过我太熟悉Java,还是想写C++。所以没去。
网易游戏(视频面):
一面:
自我介绍
介绍一个项目
数据库了解吗?
为什么析构函数要是虚函数,为什么c++没有默认析构函数为虚函数
1.模板成员函数不可以是虚函数 https://blog.csdn.net/zzuchengming/article/details/51763563
2.C++里面有很多小类,如果都有虚析构函数,则会对每个类都加一个虚表指针,浪费内存
1/x + 1/y = 1/n
求最小的n,使得对数超过1000
刚开始推了个公式,写了个暴力,解释给面试官听,不过面试官没听懂,然后他告诉我解的方法,也是暴力,又重新写了一遍,还是没跑出来。面试结束之后才跑出来,跑了10多分钟,答案是180180(不知道答案对不对)
二面:
介绍一个项目
C++11 的新特性
auto,shared_ptr, weak_ptr, unique_ptr
forward, move完美转发
RAII机制,lock_guard
java,可达性分析
新生代,老年代
C++11的template和java的范型区别
https://www.zhihu.com/question/33304378
如何制作一个游戏,当用户到达一个视野之后,怎么更新怪物
怪物有愤怒值,怎么去设定这些事
离散化,染色
这次二面体验很好,有些问题不会面试官会一步步引导你怎么做,涨了很多姿势。
目前不知道有没有三面,不过腾讯已经收到offer了,所以应该不会面了。
腾讯现场面
腾讯一面:
自我介绍
手撕:
1.字符串去空格
2.十六进制转十进制
如何求前100大的数
堆和栈的区别
全局的const,在函数里面改const的值(没理解面试官问什么)
io多路复用,为什么epoll比较好,什么时候select比较好
两种触发方式
进程间通信
共享单车如何分配
有一户家庭,生了两个娃,其中一个是女孩,另外一个是女孩的概率
栈实现队列,队列实现栈
STL set用什么实现,为什么用红黑树实现
hash用在什么地方
各种排序空间复杂度和时间复杂度,稳定程度
快排什么时候最不稳定
linux基本命令
查看进程,线程,函数的cpu占用
gdb
字节序,网络序是什么字节序,为什么会有不同的字节序
腾讯二面:
介绍了一下组是做什么的
自我介绍
在学校里面学了什么
怎么学习的
项目介绍
手撕:求一个集合的所有子集,递归实现,非递归实现
本来想问一下围棋怎么数目,不过不懂围棋的规则,所以面试官换了下面的一个题
手撕:去除包含4的数字,求一个数字是第几个数,比如5是第四个数(数位dp)
腾讯hr面:
问了一下自己在学校中和自己家庭的一些情况。
问了一下自己今后的职业发展。
反正随便聊天,面试官蛮亲切的。
19号收到offer,原来我一直以为我是SNG的,收到offer居然是TEG的 233
微软现场面:
一面:
稍微问了一下项目,介绍了一下组,是做云存储的。
手撕:
有一个楼梯,一共有n层,可以走a步,也可以走b步,问最高能走到哪里?(dp,O(n))
增加一个条件,有一次条件可以回退一半,比如本来在第8层,可以有一次机会直接到第4层。(两次dp,O(n))
二面:
手撕:
一个数组,里面大多数都是成对的,只有两个数没有成对,求这两个数(异或搞一下,把数组分成两组)
设计题:
get(), 每次取最小的数 Release(int num),释放num 比如调用3次get(),依次得到1, 2, 3 如果调用一次Release(2),再执行get(),会返回2 这个就相当于linux里面的文件描述符,每次往小的取。 我直接用优先队列(最小堆)和map(因为Release可能会对一个数字释放两次,所以要记录有没有释放过)实现的。 写test case
三面:
手撕:
求一个栈的pop序是否合法。
int to string,
string to int。
这两个是库函数,要注意各种情况,比如string to int的时候,数字越界要抛出异常,要考虑负数,前置0等情况。
写出test case.
题目不是很难,主要是看你写代码的严谨性。
微软的面试一般有两轮,两轮之后如果面试官觉得你还不错则会有3面。微软基础不怎么会问,基本上都是考算法,要你站着用水笔在白板上写代码(比用纸写累好多),面试官也会非常重视test case,基本上每个问题代码写好之后都要你自己设计test case。 面试结束之后回去等结果,感觉问题不是很大(火车票,住宿费全报销,这点不错)。
最后
最终选择了腾讯,家在杭州,深圳有点远。不过对于快要毕业的人来说多去远方看看也蛮好。祝大家都能够拿到想要的offer~
掘金技术征文链接? juejin.im/post/5aaf2a…