Re: [闲聊] interview 心得

楼主: knt (keep going)   2014-07-31 16:40:38
其实公司找人,就只是在找"合乎公司需求"的人才而已,青菜萝卜各有所爱
先讲我interview时想要找的人,是想要遇到能让你surprise的人:
根据这个前提,大家可以想想,都能够答的出这些在wiki上面有答案的应征者,会让你
surprise吗?若是我是DK,面试了十几二十人,竟然都没什么人答的出来,我想遇到一个
全对的家伙,我应该会surprise XD. 但因为我自己面试别人时,从来就觉得问这些没
什么意思,大家都是人,记忆力有限,所以即便是很基本的东西还是有可能忘掉...
因为我希望从面试者的回答里面,听到比较有深度的东西,所以就尽量问不是一翻两瞪眼
的题目。ex: 当你发现一个web service死掉的时候,你会怎么找问题 or 说一下user
从browser上输入一个网址后,后面会发生什么事情. or 有用过版本控制吗?svn or git
都可以,那你可以讲一下他们的原理吗?
其实这些问题都没有所谓的标准答案,只有答的完整不完整而已,我就遇到可以把git讲
的超级完整的新鲜人,因为他自己很有兴趣,花时间研究过,他还考我知不知道git
commit的时候那串hash code是怎么产生的(wow, 连这个都知道,very impressive!)
但也遇到问新鲜人发出一个request后会发生什么事,他就说:server就会回应他内容阿
...说实话,也没有错...
但这个答案就没有让你surprise.基本上这些问题,都能让我们更多去观察这个面试者的
特质,例如刚刚那个很嫩的新鲜人,在听完我们讲dns, server request handle,blabla
之后,问他有没有问题,他说...喔,懂了,没有。我们就知道,这面试差不多了,因为
即便他遇到他不会的问题,他也没有想要知道更多.大家都当过菜鸟,你现在会的,觉得
很简单的,很理所当然的,你以前真的都知道吗?肯定不是,既然这样,何必对别人卖弄
你很熟悉的东西呢?interview其实就是考验面试考官,能否发现有潜力、有实力的人阿.
觉得台湾软件业的悲哀,就是大家都只想要找即战力,但完全不看重素质...
举个例子来说:前年我记得隔壁team录取了一个大学刚毕业的新鲜人,满月后听他sharing
觉得很普通,好奇为何么当初进的来,就跑去问当初面试他进来的leader,结果让我很
惊讶,他说:他的确面试的时候表现很普通,但我们发现他在白板上写code的时候,会
一直做一个动作,就是会来回反复检查,然后找到一点错误,再检查,还会自己refactor
,他们就是看上这点...这个动作,让所有面试他的人觉得"surprise!",老实说,有几个
新鲜人答不出来merge sort跟bubble sort,然后又有几个会自己做refactory阿,讲真的
算法大部分都已经有现成的library可以用了,谁还要你自己刻 ==,但refactor真的
是天天都在上演阿~
DK所问的问题,若是在他们的工作上都有用到,找到一个都能答出上述问题的人才,
想必也是理所当然的事情~至于答不出来的,各位也不必太在意,因为...就只是不适合
你开的是什么职缺,就找什么样的人。还是那句话,青菜萝卜,个有所爱~
※ 引述《uid88 (uid88)》之铭言:
: 那些这次没有答好题目的应征者,他们回去后会做什么?
: 是不是回家去背这些题目? 再去熟读大一大二DB课本?
: 下次到另外一家面试,是不是就是大家比谁背得多,谁背的完整?
: 如原PO文中所提,答案不就在wiki上吗?...
: (唉,似乎又看到联考的遗毒...)
: 当然你可以说,如果他在这个领域下过功夫,“这个”“那个”应该不会不知道
: 可是对写程式写出兴趣,后来都在写程式想要把这当职业的人,
: 和对考试读出兴趣,对各种所谓考题都滚瓜烂熟、准备好考试的人
: 比较起来,后者会容易出线
: 他们学校毕业后,我们要验收的是什么?
: 是对这个产业的认真、热诚和兴趣
: 还是他们修课的成绩单?
: 当题题都有一半的人不会,“下修再下修”时
: 给他们的印象是什么?
: 是不是也要检讨一下面试的内容和流程?
: 我希望这些被问了都回答不出来的应征的人
: 1. 不要因为这样就对这自己在这产业失去信心和兴趣
: 2. 不要因为这样回家就开始背书
: ※ 引述《DarkKiller (System hacked)》之铭言:
: : 这篇要讲的不是面试者,是以面试官的立场写下一些心得。
: : 7/28~7/30 到南部去面试,排了 21 个人,有 4 个放鸟所以只面试到 17 个
: : 人,大多都是网站后端相关的职缺,也有一些 API Engineer 与资讯系统的职
: : 缺。
: : 这次面试都是从 104 上找,以大学或硕班新鲜人为主。只要符合这些条件我都
: : 请我们家 HR 联络来谈:(是 OR 不是 AND)
: : 1. 有 Programming 工作经验。
: : 1. 刚毕业/退伍,资工/资科/资管毕业。
: : 2. 刚毕业/退伍,有任何资讯相关的作品。
: : 3. 刚毕业/退伍,自传写得还可以的。
: : 挑履历的标准应该是不算高...
: : 我 interview 的习惯是一律从面试开始,先说明投的这个职缺要做什么事情,
: : 然后跟面试者先确认这是不是他要投的职缺。
: : (因为偶尔会遇到投错职缺的,确认后可以省下大家时间...)
: : 接下来就是问一些工作上会用到的技术相关的问题。以网站后端、API
: : Engineer 以及资讯系统来说,因为主要都是跟数据库有关,所以大多都是先从
: : 数据库起头开始问:
: : * 请列出 RDBMS 里的 JOIN 有哪些。
: : 答案可以参考 https://en.wikipedia.org/wiki/Join_(SQL) 这边。
: : 大概有一半的人一个都答不出来,可以讲出的人我会要他说明他列出的 JOIN
: : 在这种图的表示法:
: : https://i.imgur.com/7BIsxZn.png
: : 各种千奇百怪的答案都会出现 XD
: : * 请说明数据库里 Transaction 是做什么的。
: : 答案可以参考 https://en.wikipedia.org/wiki/Database_transaction 这
: : 边。
: : 大概也是有一半的人会回答“不知道”,有蛮多人以为 transaction 就只是
: : Atomic 的特性。
: : 如果大概还讲的出东西来的我会再问 ACID 的四个特性。
: : 关于 ACID,可以参考 https://en.wikipedia.org/wiki/ACID 这边,不过只
: : 有两个人有被问到 ACID,其中一个只答得出 AC,另外一个对 CID 都用掰的。
: : * Primary Key、Unique Key、Index Key 的差异
: : 已经是比较偏实务上会碰到的议题了,不过超过一半不知道差异。甚至会说
: : 他之前的工作用不到 Index Key... XD
: : 可以参考 https://en.wikipedia.org/wiki/Database_index 这边,不过维
: : 基百科这边的资料比较偏学术上的说明。
: : * 数据库的“正规化”做了什么事情?解决了什么问题?
: : 也大约是一半的人答不出来。答得出来的我会问 1NF 做什么,然后所有人都
: : 在这题挂掉...
: : 参考 https://en.wikipedia.org/wiki/Database_normalization 与
: : https://en.wikipedia.org/wiki/First_normal_form 这边。
: : 这些数据库理论是工作上比较会碰到的东西。我不太喜欢问 SQL 语法怎么下,
: : 主要是因为这些语法各家都不太一样,真的用到时查一查就好了。而观念的东
: : 西才是难教的,interview 的时候问这些鉴别度还算高...
: : 接下来我会问一下资料结构与算法的东西:
: : * Stack 与 Queue 的差异?
: : 热身用的题目,大多数人都答的出来。不过还是有唸了四年资工的人说不出
: : 来,让我囧在那边...
: : * Priority Queue (Heap) 是什么?
: : 有些人是“听过,但忘记了”,有些人是完全没听过,基本上就是都不知道...
: : * Tree、Binary Tree、Binary Search Tree、Balanaced B.S.T. 的差异?
: : 意外的是大约一半的人不知道 Tree 与 Binary Tree 的差异,就更不用说后
: : 面这几个的差异了...
: : 可以把四个资料结构的差异都讲出来的有两位,我就问了 AVL tree 与 RB
: : tree 的差异,然后就挂掉...
: : * QuickSort 与 MergeSort 的差异?
: : 这两个都是经典的算法,不论是学校还是职场上都会花很多时间教或是用
: : 到的经典算法。
: : 两者的差异随便列出来应该就一堆,不过情况比想像中的有趣...
: : 像是 O(logN) 的 QuickSort 与 O(N) 的 MergeSort。或是把 BubbleSort
: : 当作 MergeSort 在讲...
: : 如果面试者不知道要从哪里开始的话,我都会提示“时间复杂度”会是一个
: : 方向。不过都答不太出来...
: : 有好几个面试者都有提到 Divide-and-Conquer,然后被我反问哪一个是
: : Divide-and-Conquer 哪一个不是?
: : 然后我有时会要求用手写一些程式 (不限程式语言,也不需要 include 之类的
: : 步骤,重点有表达出来就好):
: : * 九九乘法表。
: : 请不要小看这个题目.................................................
: : * isPrime(n)。
: : * GCD(n, m) 与 LCM(n, m) (最大公因子、最小公倍数)。
: : 死亡率还是很高的题目。
: : 讲一下心得好了。
: : 我 interview 的习惯是问到答不出来为止,这样我才会知道会多少东西。通常
: : 都是从基础的东西开始问,而蛮意外的是,大多数人都会死在起跑点...
: : 本来 Programming 的东西还打算考 Eight Queen 之类的问题,不过后来还是
: : 下修再下修...
: : 另外一个我还蛮喜欢问资工毕业生的问题是,“你都唸了四 (六) 年的资工,
: : 知道资讯领域最高奖项是什么吗?”
: : 还蛮意外的是大多数人都不知道 :p
: : https://en.wikipedia.org/wiki/Turing_Award
: : 最后问一下,有人要投履历吗?
作者: robler (章鱼丸)   2014-07-31 16:45:00
在白板上写程式还要refactory是要逼死谁XD
作者: hl4 (Zec)   2014-07-31 16:52:00
可能是觉得写完也只能盯着考官发呆,干脆顺便重构一下
楼主: knt (keep going)   2014-07-31 16:54:00
话说,他的code其实是错的XD
作者: final01 (牛顿运动定律)   2014-07-31 17:08:00
我就在想写对又refactory还普通阿 XD
作者: leochen0818 (Leo)   2014-07-31 17:40:00
青菜萝卜各有所爱。
作者: saladim (杀拉顶)   2014-07-31 18:17:00
"refactor" as a verb
楼主: knt (keep going)   2014-07-31 20:13:00
thanks for correcting!
作者: Baternest (忍蛋)   2014-07-31 21:17:00
git算sha1的hash这段在Git权威指南这本书看过
作者: uranusjr (←這人是超級笨蛋)   2014-08-01 08:06:00
Refactoring (n.). Refactory is not a word.

Links booklink

Contact Us: admin [ a t ] ucptt.com