: 推 strlen: 哪有什么不能左右?智力测验都立法不准考了 闹一闹以后白 10/05 11:28
: → strlen: 板题也是智力测验的一种 也立法除非职务有需求不然不准考 10/05 11:28
: → strlen: 也是很合理的啊?我跟你说喇99.99%的程式职缺根本就都用不 10/05 11:29
: → strlen: 到那些拉机白板题 在现实中一点用处都没有 10/05 11:29
: → strlen: 没用的东西大家拼命刷 用力刷 这他X的跟古代考八股文有87% 10/05 11:29
: → strlen: 像 这不就是智力测验的变形而已?脑残公司才会在那边通通 10/05 11:30
: → strlen: 考白板 就只是便宜行事而已 10/05 11:30
现实生活中也不少人用不到微积分,你看
看有多少大专院校科系把它列为基础必修
科目?
我也同意绝大多数的白板面试考题,你在
现实开发场景中几乎遇不到一模一样的题
目。但不代表他背后考核的东西,没有测
验的价值,也不代表他背后考核的东西,
在现实开发场景中没有用处。这个我想之
前有版友分享过了:
Re: [讨论] 软件工作真的有需要刷题吗?
https://hhp.li/BDCnO
所以举“99.99%的程式职缺根本就用不到
那些拉基白板题”做为反对白板面试的筛
选机制,说真的有点好笑;我想这可能也
是很多反对刷题仔的一些误区:
(1) 题目要刷够多?
实际上不是,题目可能背后考的是同一个
思想,有些人练习的题目数量是别人的十
分之一,但却花心思从中看出了“套路”
可以取一反三写出其他题。在 Educative
上面有一门很知名的课程有总结这些所谓
的刷题套路(pattern):
Grokking the Coding Interview
: Patterns for Coding Questions
https://hhp.li/8cucv
(2) 面试上遇到题目就是要给出最佳解?
实际上可以说是,也可以说不是。有些题
目考核的是你的熟悉度,这种可能就是面
试官希望你能够一上来就拿出一个复杂度
低的解法;但有些题目考核的是你的沟通
能力与思考过程,这种不用一上来就端出
最佳解,而是一步步在互动过程中完善解
答,甚至有时候你即使这题没有 AC 也能
拿到比那些背诵给出 AC 的人更高的分数
。
(所以即使你刷过一题,可以直接给出最
佳解,有时候藏拙装笨会比直接端出最佳
解更好。)
大厂的不同关卡通常会有给定的时间限制
,可能会默认说这关要出几题 easy、几
题 medium、几题 hard。如果今天默认这
一关要测 2 easy, 1 medium 结果你的时
间只答出 1 easy 那就掰了;如果今天预
设要测 2 hard,结果你直接给最佳解,
省略那些沟通过程,只能出更多 hard。
有些东西是要有一些“感觉”的,要能够
猜出对方想要测验什么,这其实不论刷不
刷题都很重要。
(3) 白板面试测验到底好不好?
说真的就是“见仁见智”,如同上一篇说
的,他可能只是面试多个关卡中的其中一
个环节;有些大厂还是会考,有些大厂则
有其他选才机制。
我认为他有存在的必要,而且的确是满适
合作为筛选机制,其中:
> 如果给出对方没见过的题目,能够考察
对方对于文义的理解,还有能不能在题目
叙述完毕后,额外再来问我一些没提到的
限制条件或是资料状况?
举个比较浅显易懂的例子,今天题目中有
个操作是需要排序,对方会不会注意原始
资料是不是已经基本有序?会不会问有没
有内存的限制要做额外处理?
> 能不能适当地把题目要实作的内容,选
择适当的资料结构,把问题“抽象化”,
有了适当的资料结构再来设计算法?
最简单的就是同样都是线性结构,可以使
用 Linked List 储存也可以用 Array 储
存,为什么要选其中一个?是根据哪个考
量?为什么?
> 实作过程中有没有考虑边界条件,提前
不符合就返回,避免冗赘的计算或是处理
了本身题目就不会进来的条件。
有位教师经常举因为程式错误导致飞机失
事的例子,来说明工程师的重要性。练习
的过程中,会不由自主地去想到这些,当
然这也包含在前面两点中,有没有空值?
有没有负数?有没有重复值?是不是整数
值?
> 有没有良好的开发习惯?命名习惯?单
元测试?
会不会出现神奇的 a, aa, b, dd 变量名
称?会不会适当地将操作封装成函数?
后者的习惯让我在实际开发上有不小的收
获,一来是除错时方便定位,二来是会对
程式更有一种掌控感。中国大陆有一名脸
书离职的员工跑去开了所谓的刷题课,虽
然课程内容我不觉得有多好,但他最一开
始有个导论介绍他怎么写题目,收获算是
颇丰。
他提到他曾经的主管,会在厘清问题之后
先写下过程中要实作的函数,而不是全部
都写完逻辑之后再拆分成函数。这种“自
顶向下”的开发方式,会有一种提纲挈领
的用处。
(而且这种习惯,搭配 GitHub Copilot
面对实务中那种常见的 CRUD 写起来根本
超级无脑……)