小公司里工作,面试的人也挺多,就一直在想怎么样面试出一个优秀程序员
结论:能清楚明白表达逻辑,写出一篇好文章我觉得就很优秀
我能想到的面试的点:
算法,设计模式,语法基础,线程,数据库,SQL语句,发布,部署,web容器,代理,系统容器,虚拟化,配置(yaml,json,ini),缓存(redis),程序思维方式(0/1表示问题,0/1解决问题),设计程序,分布式,资源争用(各种锁机制),数据一致性,各种出名框架
算法怎么面:
搞复杂的大多也就了解皮毛,一般的小公司能用到多少。大公司呢?找数学专家不好吗?让非专业的程序员解决这些可能花费很长时间才能得出的算法,意义大吗?可信吗?有保障吗?完备吗?
搞简单的一个大学数据结构的题好像就已经超纲了,还能记得时间复杂度,空间复杂度的人有多少,能记得怎么算时间复杂度,空间复杂度的人又有多少,能自己算出自己代码的复杂度的人又有多少,能用概率论评估复杂度的人又有多少。
我们这个小企业,能有个读数据前估算一下数据范围的人已经很有用了(决定在内存中算,还是数据库中算)
我觉得能写出一些简单算法,知道常见数据结构的复杂度以及怎么算出来的就已经很知足了,什么分析问题,找循环不定式等等可能都是妄谈
每天做几道题,娱乐自己提升自己思维广度还是很不错的,但是我其实没想明白一个有家庭的人时怎么不看娃,涮题的,抱着娃一起?
线程怎么面:
这个吐槽点更多,下次接着写