昨天电话面试了一个 1.5 线大厂. 面试官是一个烙印和一个小中, 其实两人年纪一样大, 都是刚刚工作了七八年的青壮年。
两个面试官先分别做了较为详尽的自我介绍,有效的纾解我的临场压力,这么安排挺好,非常感谢。
开始的热身开胃菜有下面几个:
问 a == b, 在什么情况下 ++a != ++b ?
进程和线程的区别是什么?
单机多进程/多线程如何通信和协作? 如何安全的访问共享资源?
多进程多机器分布式呢?
主食 算法题:
* 设计一个 class, O(1) 实现 insert, delete, get_random, 无重复数。
follow up, 有重复数呢,说出原理就行,没有要求实现代码。(我是两周前刚刚熟练到5分钟达标,咱的人品的逐步提升.)
* LFU cache
follow up, 如何 thread safe?
最后5分钟,是候选人的提问时间。我准备了很多,随机问了三个问题,时间差不多 就打住了。
最后一个问题我了解了他们的技术栈。回答明确指出 Language does not matter. 真合我意.
最后超时 5 分钟.
心得,
* Clarify spec, don't solve the wrong problem.
* Think loud, 不要急于打代码,从容说出完整思路,说出数据结构和处理逻辑。就像平常工作跟同事商量一样。
还有 EPI 的很多心得,本次没有用上,比如:先用简单的典型案例走一遍,验证设计的可行性。
期间烙印面试官也多次提示我多讲讲我的题目理解,数据结构设计和自己的思路,非常感谢他。
他在中国华为工作多年,以我的经历体验,他算是比较公平的。两个题目结束,都主动说出 I'm satisfied.
90%的时间烙印在说话,小中比较沉默。
小插曲
小中加问了一个 follow up, 我说了大概思路,烙印都说好了,过了,可以进行下一个了,小中还在追问实现细节。
自我反省,我以前面试的时候,也应该加大包容的力度, 对华人候选人更加友善。水平差不多就行了,不要过于为难同胞
鼓舞打气,
我自己确定的就是我肯定比上次脸书面试答的好,两道题基本都做出来了,包括 follow up 也做出来一道,
就是系统原理方面还比较差,像多线程和进程有什么区别?怎么加锁等等. 我还没有准备。
热身问题,参考答案.
++a != ++b, 一个短整 一个长整型 边界时候 一个变负数 一个变更大.