个人情况:广州211硕
主要时间:
04-15 简历投递
04-16 邮件通知笔试时间
04-18 笔试(3大题AC两道+第三道A0.3)
04-22 约面试邮件
04-26 面试(0.5h写代码 +1h面试)
一面流程:
1. 半小时手撕算法
一道手撕算法。
一个句子:I have a apple pie
一个mxn矩阵,能放几个完整句子
I _ _ _ _
h a v e _
a _ _ _ _
a p p l e
_ _ p i e
撕了半小时,面试官来了,看到O(n2)的暴力,问有没有优化,提示周期。
答:
假设花了3行保存了一个句子,那么将这3行保存成一个状态。
中间经历了几次保存后又出现了这三行的状态则为一个周期,直接相加即可。
面试官反应一般,进入下一个环节。
2. 自我介绍
重头戏,应该算是准备比较好的一个环节。
本身有leetcode500+底子,好好准备了一下,分为以下几个部分。
数据结构:单链表 双端列表(list) 二叉堆 BST 双栈实现队列 归并排序 非递归归并 123路快排。说明可以熟练手撕,面试官点头但没让我写。
算法:链表(反转等)树(BST等)字符串匹配(kmp ac automation manacher trie 后缀自动机 lcs lis lcis等)查找(二分 约瑟夫环 随机圆内点 跳表等)图(tarjan unionfind bfd dijsktra a* 二分图 ) DP(一维dp 背包 状压DP 树形DP 数位DP等)
还有前缀和 滑动窗口 线段树 单调栈等等。
过程中面试官点头,没有打断。
C++:C11(move forward universal_ref functional shared_ptr weak_ptr等),STL(vector hashtable rbtree等),多态(虚),内存分布空间,模板元编程等。
计算机网络:TCP/UDP IPC IOCP(epoll iocp select由于都写过网络层,详细说明了区别) HTTP URL TLS ICMP等。
OS:进程调度 页面置换 磁盘调度 多线程 线程安全 进程安全 MMAP等。
整个过程面试官基本只听我说,时不时点头,过程持续40~50分钟。
3. 项目深挖
MongoDB key的使用限制:本身没注意,没答出来。
写网络层时,HANDLE的情况有没有CMD指令调用过:没怎么注意。
渲染引擎有没有了解:direct11用过,UE4目前学习阶段在ue4c++过度->编辑器slate->渲染引擎,还不太熟。
这一方面不太出彩,向面试官说明了自己觉得项目比较浅,对于企业级用处不大,想先抓好基础,面试官表示可以理解。
4. 嘴撕算法
mxn包含只01的矩阵,左上角为0,右下角为1,f(x,y)可以翻开某个点确认0还是1。0只和0连通,1只和1连通。(上下左右相连,斜边不算)
问怎么翻开f次数,使得f最少能得知所有点情况。
想了30s~1分钟,答:
同时左上0和右下1开始遍历,以左上为例子,开始只有两个路线,右或者下。
如果全是1,结束。如果一个1一个0,走0,因为连通的关系,1是死路。如果全是0,都遍历。
一般情况:中间某个位置为0,如果有三边为1,走0,不然结束。如果超过两边为0,全走。
面试官点了下头,没有继续问优化。
5. 反问情况
面试官:你的知识面比较广,算法还可以,我也看了你贴的leetcode,刷的挺多的。不足在于工程能力不够深入,和简历有些落差。
反问:有二面吗?
面试官:5-7个工作日。
6. 个人总结
核心代码模式写多了,一定要把输入练好!stringstream一时紧张调了半天输入。
个人介绍和嘴撕代码算是出彩点,导致后面面试官对基础的问题是一点没问,只能问项目。
问题:项目里不够有把握的别写,不然就和我一样得到简历有些落差的评价了。
许愿二面吧,不知道算不算凉....
全部评论
(6) 回帖