AmazingTalker CTO 回复面试心得
(此为 AmazingTalker 人资部门代为转发)
感谢版友分享在AmazingTalker的面试心得,也感谢各位大大的关心。
在招募过程中,我们一直检讨,并作出相应调整和改善。
当天面试过程不着墨太多。
这个Po文主要希望跟大家交流我们为什么会这么设计技术面试,
希望如果大大们有更好的建议,不吝指教。
也期待抱有相同理念的大大来应征,互相交流成长。
(文末附上面试题目,还有CTO的程式码,欢迎跟各位大大交流)
============================
《我们正面对的技术难题》
新创的开发周期往往十分短,要在人员有限下完成pd的想法,一直是个挑战
所以如果程式码写的不干净,开发的时间与品质就很难控管得好
具体的实例:
* 程式码如果没有从根源处理,散落出去后会很复杂
-> 举例: 后端api拿到data没有先转好格式,render component就要做很多判断
* 程式码如果写的太定型,所有的案例都会像特例
-> 举例: 第三方登入虽然很相似,但每个却拆开成独立逻辑
* 程式码如果没有针对独立事件去做拆分,内聚会下降
-> 举例: 商业逻辑层就像传统的god object,因为namespace很广泛,导致task object
一直往里面摆
因为我们希望达到的敏捷开发的宗旨“不预测未来,但适应未来”
所以我们必须上修clean code的重要性
============================
《Clean Code 是一种心法》
有大大提到会专有名词不代表会 Clean Code,CTO是完全认同
Clean Code是一种感觉,没有既定的呈现化方式
从知道定义,到理解和内化,进而可以写出来不是一件简单的事
就好像写作一样
即使掌握了单字,文法,排版,也不一定能写出一篇动人的文章
为了要维持很快的开发速度,尽量避免技术债的产生
我们必须要在实务上对 Clean Code 有很强坚持,而不希望只是形式上的Clean Code
============================
《招募心得分享》
我们的面试是为了解决以上难题而设计
我们透过 Leetcode 考题和受试者提交的程式码
判断他们对 Clean Code 的理解有没有乎合我们的预期
而对 Clean Code 的掌握度,不是指要背某个专有名词的定义
而是对 Clean Code 概念有融会贯通的理解,并在日常开发中实践出来
============================
《最后跟大家分享面试题目》
只有文字不好想象,还是直接抓一题,用程式码来说话
题目
https://leetcode.com/problems/alphabet-board-path
我们请受试者针对clean code的方式去做答
(如果有兴趣者,也可以先自己先写过一遍)
然后面试的过程中会出一版test.js针对解耦为主,但命名和写作皆有点随性的版本
了解受试者对该段程式的看法
感谢阅读
* 面试考题 test.js
https://drive.google.com/open?id=111BSeF1dWMoNEjKz1U0aMDdaE4rPR3Wh
* 我们的clean code范例 demo.js
https://drive.google.com/open?id=1-zMWbkza2tzY5DMwAFA8QBq596ZBOEM1
作者:
strlen (strlen)
2020-04-22 23:56:00其实大家都知道你只是想问面试者DP跟clean code的理解而已
作者: vavamos (vavamos) 2020-04-22 23:56:00
作者:
strlen (strlen)
2020-04-22 23:57:00这没有什么的 但建议就是下次面试 单纯问你们想问的 面试者怎么回答 你们就点点头说了解了就好 不用酸面试者或甚至当场为了电面试者就开始教育面试者正确观念工程师多半都心高气傲 玻璃心得很 不用直接点破 直接下面一位给感谢函就好 <--- 这很重要 不给感谢函 很多人玻璃心也会碎满地 XDDDDD你抛名词 对方不懂 你就心里默默打分数就好 放他一个人在那边尴尬 他如果问 你就再说明一下问题就好 不用给解答
作者:
strlen (strlen)
2020-04-23 00:02:00先说我没有在说原PO喔 我是说原PO底下一堆推文 XDDDD这些气pupu的推文 被面试时如果被电 就会跑上来公审企业XD
好奇大家觉得CTO的范例的clean程度如何呢@@?
作者: dddingnan 2020-04-23 00:18:00
推 长知识 谢谢
如果很在意clean code 为什么要用js这种弱型别的语言呢?看了重构后的例子还是无法看懂要做什么啊拍谢我没看题目
就说是方便沟通就好。排球校队随便都扣得到篮,跑去问人家知不知道什么是入樽是在哈囉,随便练一个月就吃爆你
作者:
hduek153 (专业打酱油)
2020-04-23 00:32:00反正都要问名词定义了 不如直接出个设计题吧
作者:
strlen (strlen)
2020-04-23 00:33:00还是一堆人无法理解到底是怎么回事耶 XD企业面试 问什么 当然是问企业所需要的人材阿 XDDD你反问面试官你又如何如何 何不自己开一间公司好了?他只多做了一件事 就是评论面试者的回答 然后原PO很在意企业面试不是联考 不用给正确答案的 也不用告知面试者成绩只需要让面试者知道有没有录取即可
我觉得这范例只能看出coding style 还看不出系统层级的重构 可能要从架构设计考DP会比较有鉴别度
唉我怎么不能理解,我又不是没跟年轻的面试过,不同师字辈的也都有自己的行话,就事论事你最后一关当人家就是搞笑而已
作者:
xlf (Cote rocks!)
2020-04-23 00:46:0013楼正解XD
作者: superpandal 2020-04-23 01:19:00
选择而已还公审勒 XD 公司选人 人也在选公司 企业会因为乡民怎么说就改变做法吗? hahaha 话说对程序有追求的人不用clean code也会写好 说到底这还是个派别某人以前的发文再次了证明当元老的重要 点不一样而已后人再傲也傲不过前人 可以自己解决何须请人? 如某
作者:
drajan (EasoN)
2020-04-23 01:28:00这程式码还蛮优美的 写得比我的短的很多 有CTO水准
作者: superpandal 2020-04-23 01:28:00
人所说确实有些人不留口德
作者:
fightmz (漫无目的)
2020-04-23 01:38:00推 cto 愿意花时间分享
我还查了一下cleanCode名词是真的不知道,可是正在重构之前工程师写烂的系统不太懂写得别人看不懂有什么意义
作者:
angusyu (〒△〒)
2020-04-23 02:13:00写这么多是有讲到问题点吗?
还好之前面的那个没问啥名词那个人做熟了啥都没想的在工作……毕竟程式语言嘛,就跟讲话一样一直被问要不要转正,可是我喜欢派遣的一些特色我讨厌责任制
作者:
Masakiad (Masaki)
2020-04-23 02:25:00红的明显,这篇还是没有说明“为什么要纠结名词而不是名词背后的内涵?”
作者:
Masakiad (Masaki)
2020-04-23 02:27:00相信这篇所讲的道理大家都能理解,不能理解的是这个奇怪的点。
说真的,我觉得13楼的大大是有点超译,公司想怎么考是它的自由,那乡民怎么评断不也是我们的自由吗,难道说句我觉得这样考不合理也不行XD
刚毕业的人我是能理解,但是要老工也记这些东西太痛苦了所以讨厌面试是真的……
作者:
Masakiad (Masaki)
2020-04-23 02:44:00另外原文底下的回文;应该没有“大大提到会专有名词不代表会 Clean Code”而是有大部分版友认为“会Composites不代表一定会知道这样做叫Composites ”。然后Composite 没有代表Clean code,真要说跟DP比较有关XD
作者:
umum29 (....)
2020-04-23 02:49:00请CTO试想:在面试时要你讲clean code的extract & override你做何感想??你面试应征者 也就是让大众知道你的风格
作者:
sorryla (Mr.东)
2020-04-23 02:52:00根本问题就是面试官的面试能力有待加强,不知道怎么问才
作者:
umum29 (....)
2020-04-23 02:53:00有公司会问全台湾有几个加油站 也有公司强调不问这种问题
作者:
sorryla (Mr.东)
2020-04-23 02:53:00能问出他想要的信号,结果就变成问名词解释
作者:
Masakiad (Masaki)
2020-04-23 02:54:00有分享跟灭火是好事啦,只是重点错了,可能版友很难改观
作者:
umum29 (....)
2020-04-23 02:56:00问的太偏门 你找人就是碰运气 碰到刚好考前读过的工程师给的待遇好 当然会有一群好的人才任你选 反之 就运气运气
作者:
Masakiad (Masaki)
2020-04-23 03:00:00楼上 我的看法不同,给的pay好表示可以聚集人才,但并不代表你能在聚集来的人中挑到最优秀的人才,挑法不对甚至也可能挑到差的
作者:
umum29 (....)
2020-04-23 03:04:00楼上当然 但这是机率问题 我直觉这CTO就是在往一个坑跳就像考leetcode也一样 刷题最厉害的人是最优秀的人吗?忘了说那范例只秀出coding style而非架构式的重构你考composite不如考factory与DI repository....
作者:
Masakiad (Masaki)
2020-04-23 03:25:00请面试者把自己过往写过的架构画出uml,然后再给变化需求请他重构,也是有蛮有鉴别度的
作者:
POLAX (<><.....)
2020-04-23 03:34:00讲这么多实际上还是主观与不尊重专业招募初期phone interview出题问搭船到巴西需要几天
作者:
atpx (秋雨的心情)
2020-04-23 03:39:00习惯这样写的人, 也不一定会特别去记这种名词会自我要求的工程师本来就会越写越简洁
作者:
yamakazi (大安吴彦祖)
2020-04-23 08:25:00史达林中肯XDDD,公司真的不用对面试者教育观念,自己心里默默打分数就好
作者:
jack529 (Jack)
2020-04-23 08:31:00楼上其实还有上一个CTO, 是个PHP热爱者XD
作者:
matrixki (New Season)
2020-04-23 09:01:00其实就是去改进面试流程跟面对面试者的态度即可解释说为什么要考这个考那个 意义不大
不认同 strlen 的说法 好的面试是双向的 你在面试求职者的时候求职者也在面试公司 最好的情况是双方都能在交流中互相了解到该了解的资讯 那段留言明显就公司角度而已
作者:
qrtt1 (有些事,有时候。。。)
2020-04-23 09:22:00对 js 的 clean code 没有概念,但档名我就觉得不 clean 啊
作者:
BEARlol (yogaisgood)
2020-04-23 09:26:00推
作者:
robler (章鱼丸)
2020-04-23 09:28:001楼真的是很好笑 再强的高手我也能事先准备好技术名词电他公司面试的流程和态度不佳 就怪别人"玻璃心"?面试本来就是对等的,互相的,像1楼这样觉得公司高高在上真的是可笑,还公审勒
作者:
sharku (明珠求瑕)
2020-04-23 09:34:00可以不要用 js 示范吗...
重点是抓专有名词去当人吧,谁管你多在乎clean code?更不说clean code还分流派可以战到天荒地老的你家面试内容出大问题了啦,有没有抓到重点?
作者:
how30013 (Mr.ゼータ)
2020-04-23 09:57:00根本没解释到什么啊XDD 我猜你们大概也认为自己没错
作者:
lautmn (lautmn)
2020-04-23 10:02:00先酸面试者不懂专有名词 再来说“不是指要背某个专有名词的定义而是对 Clean Code 概念有融会贯通的理解”这不是自打嘴巴?
架构跟coding style定义好~再来说啦!不要倒果为因
CTO把重点放在clean code 会不会太微观管理
为什么ㄧ直有人在强调youtuber的事情,不懂是要証明什么,youtuber的选择很重要吗?好公司也是有人1个月就离职,不好的也有人待几十年
作者:
BNT (Boo?Fuck you!)
2020-04-23 10:18:00为了只有Clean Code呜呜 Code Complete错了吗XDD为何
作者:
km101km (BaBoom)
2020-04-23 10:29:00120楼 +1
你们clean code范例就这样?自己都不过如此了还要拿名词洗脸别人好笑耶我还以为你们自己多厉害的说
作者:
bjk (Up2u)
2020-04-23 11:07:00strlen("玻璃心")
作者:
shiauji (消極)
2020-04-23 11:14:00老实说这篇完全没灭火吧
作者:
moon2519 (~X~X~)
2020-04-23 11:31:00觉得人与人之间的沟通比这东西重要...一个很强的clean code高手,跟一个愿意花时间讨论的沟通一句话,可能省下写几百行代码...如果一个人反感,可能是个人问题。一群人反感呢?
单纯对后端转格式做回应,转不转要看情况, 转了就会提高耦合性,能调用的端点会缩减。有时在client处理资料,也可降低Server效能。所以不是转资料就是好事。^^^^ 降低Server耗能,抱歉打错
作者: KoreanFish (韩国鱼) 2020-04-23 11:48:00
那个youtube在哪一段提到啊,影片有够长看不完XD
作者: sizzle0121 (氟磷灰石) 2020-04-23 11:56:00
问题你原本的论点在于不知道专有名词->不了解,这篇的理解内化也没有包含知道专有名词的必要性啊,所以试问有支持到原论点吗? 可以回答的符合你们CTO要求的高逻辑水平一点吗?
原本交了作业之后被拒绝, 心里还会很好奇想说 “哇~ clean code的版本到底可以多clean啊” 看完CTO的版本我也稍微释怀了﴿
原本的被嘘的原因就不是你们面试流程跟题目设计,重点是原po提到的,他可能有碰过相关的知识,但可能没有听过该专业名词,却被认为没有逻辑的这个点,要出来解释也是解释这点吧
作者:
umum29 (....)
2020-04-23 12:13:00对chatnoir认同 其实很多strategy都是一体两面没有绝对像:要不要在储存前先escape使用者输入的字符 就有不同答案看你是要在ApplicationLevel才做处理或直接存干净资料在db
作者:
thid5335 (討推專家)
2020-04-23 12:42:00回这么多没回到大家在意的点上 cto不会抓重点?
作者: hengsao (千金) 2020-04-23 12:51:00
通篇只是在回应空气 根本没去处理那篇的主要论点
说真的那个原po就面jr而已 写过什么超大型的项目的机率也不高 问他拆分大型架构什么也问不了多深 所以问cleancode是还好 只是这种东西有必要cto自己来问吗 而且还那么纠集名词定义... 这篇丢出ㄧ个leetcode出来给人看codestyle 也是有点奇怪 就感觉有点降cto的格调 感觉从头到尾都比较像资深工程师做的事情
CTO就是自己也没几把刷子读过基本的design pattern就以为学到绝世武功 觉得可以拿名词出来秀不知道CTO位子怎么骗到手的
我倒觉得直接丢出clean code这本书会蛮无聊的又不是每个人都看过这本书事实上junior本身经验就是不够了,看clean code我不觉得对于吸收有多大帮助当然,如果应娉需求直接开"具有良好clean code"知识那我觉得另当别论,公司自由我其实不太认同上面否定leetcode的价值
作者:
Ekmund (是一只小叔)
2020-04-23 13:39:00我不晓得各位怎么看 但于我来说 clean code首重观念清晰易于可读扩充维护 但每家公司做的东西和方式不同 code的风格也有影响 根本不存在经过商业决策变换过还clean的这造就了所谓的clean 其概念根本随产品/公司case by case要战这个词 远不如讨论实践思路 着重名词解释就更奇怪了
当然,会写出来leetcode不代表就是开发上经验如何但是如果公司觉得想要具备基本资料结构/算法能力的各位又何来干涉呢?就像是会考试上台大酱料的不代表他是好医生啊人家医学院就是要这样的人各位管得着?就别论北美FANNG的刷题要求的难度了也没看上面批评刷题的人在靠北给楼上E大,我是觉得CTO如果第一关就拿clean code丢出来,我是觉得有点强人所难不过这个行业本来就是有人重心法有人重内功Clean Code当然好,但是实际上能实践的其实有难度在实际上产品品质好会是比较偏向clean code但我觉得如果能拿实际范例去在面试中间讨论确实比直接丢出Clean Code问你会不会来更加实际刚刚看到征才网站有要求clean code 那我觉得面这些没啥问题
作者:
yfr 2020-04-23 14:23:00好久没看到公司在软件版红了,神串留名
作者:
Ekmund (是一只小叔)
2020-04-23 14:48:00如果你认同问实际范例 又觉得clean code问jr不大对那找jr来面不就很奇怪? lol核心思想依旧是“我觉得这样写不大好 可以改成...”只是那个clean会上升到SA的层级去而已 但找来面的就不是那考同一系统下的基础功比较实在吧 我是这么想的
先前问说Composite 是什么,现在说不是指要被被专有名词的定义?
作者:
paint (有斑纹的马)
2020-04-23 15:45:00欣赏这种毫无检讨的检讨 以及说人没有逻辑的逻辑
问clean code还不如问design pattern
作者:
MaxGDAM (波多野台妹)
2020-04-23 16:33:00笑
作者:
linnom (繁星)
2020-04-23 17:47:00答非所问 你给自己的这篇文打几分?
作者:
GoalBased (Artificail Intelligence)
2020-04-23 19:38:00Clean code跟语言又没关系..js为什么不行 要 go?
作者:
mouse21 (小鼠)
2020-04-23 19:51:00CTO 很年轻感觉是个很厉害的人
个人偏好 碰了几种语言 如果纯web 用go下限比js高 写起来容易比较干净
作者:
wulouise (在线上!=在电脑前)
2020-04-23 21:46:00这就是为什么google面试的重点: 让面试者觉得很自在
作者:
strlen (strlen)
2020-04-23 23:35:00哈哈哈 真的是工程师 每一个性格都被说中 XDDDDDCTO看到没有 工程师就是这样的一群人 懂了吧?下次面试注意用词就好 连考什么东西问什么东西都要干涉XDDD其实只要是有关专业上的“任何问题” 都是可以问的我说的任何问题 就是任何问题 什么有没有鉴别度 问这个好不好 其实都不关面试者的事
作者:
Ekmund (是一只小叔)
2020-04-24 00:32:00呵...用这个角度看的话 这里是论坛 讨论公司和面试是这个板的主要功能 同样不关面试官的事 不是吗?
作者:
sorryla (Mr.东)
2020-04-24 00:34:00有人好气喔,难道是本人?
其实我觉得问什么都在这边都能被靠北就算问一个简单二元树DFS问题,也会被说我写程式也不会自干binary tree反之亦然,设计模式/Clean code/ SOLID不过我觉得他们征才网站就有写要熟悉Clean Code,不觉得问出来有什么问题,公司自由当然,什么样的面试方法或是问题会更有鉴别度,大家本来就可以讨论(公审?),不过也没必要对CTO做人身攻击就是了
楼上要护航几次 大家的重点是问的方式在纠结名词 这种方式讨论不出实际能力 这跟老师叫学生死背然后考填空差在哪?他当然可以这样考 但大家讨论就是觉得这考法并不是个找好工程师的最好解阿XD我觉得大部分人没在公审啦
lol,别激动事实上专有名词可以延伸到的很多,举例设计模式中的proxy, facade, composite pattern, 都能被推类到’专有名词‘吧说真的,这些东西对某些人来说是专有名词,对某些人来说是日常不过的东西。CTO就是要找会后者的人,就算他招进来的人只会背书,能力跟不上,也是他们自己承担的,对吧并非认同他们公司的招聘方法为最合适,但是人家就是要这样的人,也写在网页上了,面试不会也没什么好批评的虽然我是觉得对于jr职位,比起clean不clean还有更多东西可以考,不过可能这本书对CTO就是很圣经、软工101的
作者:
Masakiad (Masaki)
2020-04-24 01:44:00越看越有趣,从来没有人说不能依照公司喜好出题面试,还扯工程师性格。我只看到一直在点出考名词这件事对实作能力的鉴别度很差。护航的还要硬ㄠ怎么鉴别是公司自由?等等!这不就变成一个“啊我就烂>_0”的态度吗,还是说不是工程师的都这样性格?
作者: BlueAC (AC) 2020-04-24 02:58:00
身为工程师最讨厌答非所问
会实作比会讲专有名词还重要吧...难道您要的是一位只会用嘴巴工作的工程师?
说到嘴巴实作上次我公司来个十年经验的,结果叫他实作都做不出来 只会出一张嘴一直讲而已
作者: eggtonetone 2020-04-24 18:20:00
我觉得 知道问题在哪里 这一步,比cleancode 重要啦,你说是吧 cto 大大
作者:
strlen (strlen)
2020-04-24 21:57:00我推文都是在回给CTO大大 有人说了嘛 这里论坛 我爱回谁就回谁不是吗?XDDDD你喜欢给一堆建议就给阿 我也是给我的建议嘛我的建议就是 工程师都玻璃心 被问倒气pupu 反问为什么要问这个 因为你下评语或试着教导面试者 XD面试者不是你的学生 不是你的员工 弄清楚了就知道该用什么方式应对了 至于专业上 问什么问题 完全由你决定不用理会这边一堆质疑问名词干三洨的意见 你今天问个OOP是什么可否简单解释 都没有任何问题面试者回答后默默评分 下一题
作者: justaID (快乐崇拜) 2020-04-25 14:46:00
“当天面试过程不着墨太多”,我觉得其实公司方已经知道这样的问法不适当,但又拉不下脸直认不是,又不好不回文,只好转移重点。公司当然有自由选择他们想要的面试方式,找到符合他们文化的人;论坛在不涉及恶意辱骂前提,自然也有自由讨论对流程的意见,公司可以不甩,顶多是少了一些人去面试,开得够高就不怕,买卖市场本来就很开放既然上来这个论坛征才,自然会被论坛上的潜在应征者们评论好坏
作者:
javatea (齁齁)
2020-04-25 17:54:00就一个小公司lead在那边想装逼的感觉
作者:
xxxxae86 (éžæ´²å¤§è‰åŽŸ)
2020-04-25 21:28:00说实在的用这个月表示clean code应该是看不出什么东西...
作者:
CoNsTaR ((const *))
2020-04-26 06:56:00说实话看不出 demo clean 在哪,说难听点一点也不 clean