这段时间我在参加各种互联网大厂的面试,在岗位的时候也面过一些投 TLS 的候选人,看到了很多人吐槽面试内卷等东西。所以写个怎样考研面试者工程能力的问题,也顺便简单吐槽下自己。
我个人一直认为对程序员而言,有两点是最重要的:
这两点就是我所理解的工程能力,相反诸如:微服务是什么,主备机的状态,这些我将之视为知识。当然,我个人建议大家找工作的时候还是多看看知识,毕竟我就是一个自以为两点能力很强,结果面哪哪跪的人,lolllll,
对于计算机的理解实际上我个人倾向于对于底层一些实现原理的分析,比方说内存换页,缺页中断。上层逻辑往往直接反映的是下层实现的一些知识。以多线程为例,我会先问一些基础知识,比方说缺页中断,内存管理等基础知识。然后举个简单的题目,一个无序的链表,多线程之下怎么改进代码提高并发性能。
如果能回答细粒度锁或者无锁操作,就已经合格。如果能提出在链表之外添加一个缓冲垫,那这个人必然是熟悉并发环境下的优化的
这种新知识实际上就是对面试者讲一个新的内容,看他能不能在短时间之内找到问题症结的所在,或者找到优化的点。这种例子实际上在 TLS 知识种很常见,我会给面试者讲讲密钥交换协商的流程,然后问问他为什么有了密钥交换的流程,还需要公钥 PKI 体制呢?这种问题往往面试者未必会一下子打出来,但是一般经过提示都是可以理解到位的。
这种只要经过提示能想出来就合格,能简单提示就考虑到的,就属于比较优秀了。
这个抽象能力就是对比面试者对于一些常见问题能否看出来,简单而言大部分的编程都是由模型的。反正我平时工作常见的还是生产者消费者模型。就类似一个线程发任务,多个线程去做任务这种能反映过来就说明还是不错的。
总结,诸位如果想跳槽,建议还是多看看更偏业务的知识,上面这些所谓工程能力的考核都没有什么卵用,lol,进去了还是搬砖
看来都不怎么赞同,lamo