忍不住回应下,有在使用 Homebrew 应该知道这套件管理软件超级强大
作者 Max Howell 去 Google 面试被问如何反转 binary tree
这位大神当场挂掉,面试失败
https://twitter.com/mxcl/status/608682016205344768?lang=en
这种反转二元树题目po上ptt还会被乡民笑,
但影响全世界软件界的大神就是没在刷这种东西
不只 Homebrew, 连 Python 创始作者 Guido van Rossum 当初面试Google也差点被刷掉
后来Google内部有检讨为什么现在机制会刷掉这种大神
他们也承认要写出顶级软件产品其实这些东西并非必要
后来G社面试委员会找了篇论文,
该论文指出很会刷code的面试者进公司数年后,
平均产出比同公司没在刷code的人还高
所以他们根据此研究就继续保持这项“传统”
另外我当面试官时,
会尽可能用系统设计的角度去判断此人是否有足够的软件经验
1.版本控制
不是考他指令,而是问他情境
开发中的功能是否放在主线branch还是独立拉出来,两者优劣差异
如何管理binary file 如何做Review机制
可从版控问到CI/CD甚至自动化测试的经验 (对方答出一个套件也没差,至少他有经验)
也面过完全没在做版控的,用资料夹跟档案命名版控,
这样你就知道他进来的话需要学什么
重点是: 有版控清楚的观念
2.API
遇过工作好几年的软件工程师完全分不清楚API是什么 该怎么设计
为什么需要RESTful? 什么时候不需要RESTful
REST跟SOAP差异
然后可以从API追问到microservice的经验、异质API的介接
跨单位或跨司合做这项技能很重要,代表公司跟对方技术人员谈时比较能进入状况
3.Service
刚毕业大概傻傻分不清楚server跟service差在哪
可以问写过/用过什么service
若对方有云端经验,可以聊SaaS/PaaS/IaaS
然后聊聊企业在资源不足情况该如何选择
有经验的可以多聊聊上面提过的microservice, load balance, inverse proxy...
4.安全性
遇过把产品私钥发布给客人的工程师
简述公私钥机制
什么应用情境是由server产生公私钥 / 什么情境是由client产生
凭证是什么 SSO是什么
这可以聊很多,看应征职务。但最基本观念还是需要有
(曾经还有工程师把连线到云端数据库的connection string写在客人电脑client端,吐血)
5.数据库
关联性数据库跟NoSQL优劣,什么情境需要用到前者/后者
正规化的意义是什么? 为什么我们偶尔需要反正规化?
数据库加密机制 封存机制 同步设计 auto-scaling
6.法规
欧盟 GDPR 如何做内控及如何因应欧盟/竞争对手的检举
什么情况的产品,客人会受到 GDPR 的保护? 如何让产品合规
同理, 美国CCPA也可以聊 看他经验有多少
这块台厂RD大概比较弱,想说这是PM的事
但设计系统时 (特别是数据库),若开发人员搞不清楚乱写一通
后面只是等著被竞争对手弄而已
7.开源软件授权
常见可商用授权有哪些? 如何做才能商用?
过去有无写过软件第三方授权宣告
二流的真的没在管,网络抓抓就套用然后做成产品了
这也是等著被竞争对手弄而已
8.其他
什么情境使用long polling 为何使用web socket
docker 的应用
OS相关
软件/韧体/driver
...族繁不及备载...
多跟面试者聊这些就知道他过去的经验及接触多少东西
有经验的工程师,至少都能说出些东西,马上就知道这人值不值这个价
最后我想说...软件不是只有刷题 (很重要没错,但那只是冰山一角)
不要面试者一坐下就问那些什么红黑树考白板,我真觉得那太狭隘了
明明软件有那么多面向可以聊
供参考囉
※ 引述《iidmaster (iidmaster)》之铭言:
: 刷题至少可以确保有一定水准的coding能力
: 也因为刷题满辛苦的,所以代表这个人可能是个努力的人
: 像做embedded system相关,跟刷题相关性不大
: 但是至少有一定水准的coding能力在设计架构跟实作比较不会犯基本错误
: 曾经面过一个说的一嘴的好经验~ 但是写个LinkedList都写不出来
: 也面过一个直接跟我说刷题用处不大~要我不要问他coding
: 可以把刷题当成基本门槛跟英文一样
: 拥有这些基本能力再继续谈其他的这样
: ※ 引述《dickjas (夏天的航海记)》之铭言:
: : 小弟不才, LeetCode只刷了几题. 但小弟已经工作了快18年
: : 也做了很多的大型Project, 真心认为刷题跟写程式其实没有很大的关西
: : 所以想请问各位300万大大, 真的有需要刷题吗?还是纯粹就为了面试?
: : 在下工作比较边向机台开发和嵌入式系统