2018春-面试记录

2018/3/13

做高铁去了上海,面试心中的 dream company,面试时长 2 小时。自我感觉是挂了,因为没有 HR 面

公司很大,不过进门安检是看胸卡(人工检测),前公司都是需要按指纹的。因为是实习面试所以在左臂上贴了一个贴纸,稍稍有点兴奋

第一轮是个比较年轻的工程师,先围绕以前的工作经验问问题。这里就不提了,毕竟也没什么提的价值 然后讨论了

epoll ET/LT 的区别,ET 为什么比 LT 性能高
内核态用户态的切换
asyncio 方面
Linux 的 fork/exec cow, close-on-exec 等机制
我自己主动讲了 Python 的 Dict 实现,为什么现在是 insertion ordered
OOP 和 FP,我稍微提了一下 Haskell 的错误处理
扯了扯 Go 语言
进程的状态及切换
SQL 索引,最左前缀原则,B Tree
ORM 的作用

第一轮面试感觉没什么问题,就像是在聊天

第二轮是我内推的工程师给我面试

GIL,为什么 Python 有 GIL 而其他语言没有。我对 GIL 的了解就是因为 Python 是 C 实现的,它是使用的操作系统的原生线程,所以你需要锁住解释器的状态,比如引用计数,就像使用 C 写多线程代码一样。那么 Java 为什么没有,这个我不知道

又是 ET/LT,不过更深入

求数组中和最大的连续数组,这个以前研究过但是忘了 将矩阵中为 0 的元素所在的行和列均置为 0,直接不会写

有一个 200M list 的进程,fork 后子进程迭代输出,会不会触发 COW。这个是会的,因为引用计数被修改。可以参考 instrgram 的文章

TCP 有几种状态,这个不知道

Python 的 MRO

为什么需要 metaclass

现在脑子里一片空白,只能想起来这么多,后面会专门研究一下这些问题

我自以为很懂 Python,结果其实是这么菜,惭愧惭愧