咸鱼的面经&offer选择
8月开始准备秋招,因为实验室项目的破事,所以字节的实习放弃转正提前离职了。因为觉得面试太累(咸鱼心态),所以只陆陆续续投了6家公司(网易,猿辅导,阿里,快手,腾讯,字节)。结果如下:
-
网易:意向书——游戏研发(sp)
-
猿辅导:意向书——大数据开发
-
阿里:阿里云交叉面挂
-
快手:意向书——音视频技术中台c++开发
-
腾讯:teg二面挂
-
字节:二面结束等结果中
基本上算是尘埃落定了,因为网易之前约的是9月底谈offer,所以今天稍微做个总结,然后请求一下大家的意见~
网易(sp计划——游戏引擎):
一面:
介绍学校项目
问了整整一个小时的c++,都比较基础所以记不上来了,只记得没答上来的一个:动态链接库是怎么计算地址的(got&plt)
bfs寻路的优化(A*算法)
二面:
介绍学校项目
1亿玩家,战斗力为1~100k的整数,要求能够快速更新战斗力并查询战斗力排行(树状数组)
在一个圆内随机取点的方法
LRU的实现(当时脑抽了回答了LFU的实现(双map),面试官问为啥不用链表(正确做法),我说链表没法维护频率,不能体现最少使用blabla,面试官居然被我说服了,表示你说得对。。。面试完才发现是自己搞混了~)
小节:想做渲染投的游戏引擎,但是面试的时候告诉面试官自己不会图形学,最后被转到游戏研发了
猿辅导(大数据开发):
一面:
介绍学校+实习项目
flink checkpoint原理
kudu:整体架构,数据存储细节,update原理
一些操作系统基础问题:进程线程区别,内核态用户态切换细节啥的。没答上来的:kill和kill -9有啥区别(一个发送SIGTERM,一个发送SIGKILL,SIGKILL不可屏蔽不可捕获)
三数之和
二面:
介绍实习项目
大数据排序:
A:先hash成小文件再在内存中维护最小堆
Q:分成小文件后能不再排序吗
A:不hash,按数字大小分文件,一个文件过大的时候分裂
Q:比分裂更好的策略?
A:先扫描一遍得到统计信息,再根据统计信息确定每个文件的范围
删除单链表中的一个节点
三面:
介绍实习项目
flink checkpoint原理
怎么保证exactly once
给几棵树的点和边,恢复成森林
小节:
虽然实习做的是大数据相关的,但是只实习了两个月,所以对大数据了解得其实很少(只了解flink和kudu),抱着试试的心态投的,面试的时候也很尴尬,sql不会写,mysql,hdfs,hive问就是不了解,java也不会,感觉面试的时候面试官都快没东西问了。。。最后过了主要是因为题做得快,实习项目,kudu,flink了解得比较深(这里感谢实习时带我的前辈给我安排了很多学习原理并总结文档分享方面的工作,收获很大)
快手(音视频中台c++开发):
一面:
智能指针:weak_ptr的作用,怎么解决循环引用,enable_shared_from_this的原理
单例模式
unique_lock和lock_guard的区别
一堆c++细节
http状态码
tcp
最长上升子序列
二面:
学校项目
(fork() && fork()) || fork(),有几个进程
长度为n的无序数组,数字取值为0~n-1,找重复数字
链表翻转(递归,迭代)
三面:
学校项目
tcp和udp
tcp握手挥手
rgb和yuv大小
二维数组,值只能为0或1,要求把所有1所在的行和列全部变为1
设计一个能返回站内最小值的栈
总结:
知识的深度很重要,挂掉的阿里和腾讯面试官对我的评价很相似:广度足够,基础足够,深度不够。算是非常中肯了,因为我在学校的科研工作,学校项目,实习项目和找工作用到的知识几者之间其实都没有什么交集,导致自己啥都会一点,啥都不精。
送阿里面试官的两句话给大家:
1.不用所有的都掌握到有深度,但是你擅长的还是得达到一定水平的
2.不知道没关系,面试更看重临场思考的能力
总之,本咸鱼秋招算是差不多结束了,拿到3个不好不坏,但是方向相差甚远的offer,请各位大佬提供一些建议,非常感谢~