Re: [讨论] 软件工作真的有需要刷题吗?

楼主: BBSealion (海狮)   2021-08-15 19:26:07
小弟在后端与资料领域打滚过几年,也刷过上百题 Leetcode
同意大部分算法题确实工作上不会用到,但仍然有很多潜在价值存在
就来分享一下我觉得刷题真的"有意义"的那部分好了
1. 工程基本功
例如天字第一题,Two Sum,考得就是一个 Hash Table 的基本概念
也是非常常见的 junior developer 会遇到的场景
例如现在有两台机器,定期产出 1e6 笔资料量级的 excel 报表
现在要你写个系统 on-demand 读取并合并两张报表后返回给客户
如果做成 O(N^2) 然后跟主管说他就这么慢没办法
那技术显然很有问题...
2. 将理论实际应用的能力
例如 Trie 的概念本身不难
但突然碰到没见过得复杂变化问题
你有办法马上反应过来应用上去吗?
3. Coding 速度与准确度
你有没有办法在很短时间,实作一个中等难度的问题,然后一次就 bug free pass
这对应的是你平日工作的开发效率,还有逻辑是否缜密
如果你写两三行 code 就要一直 print 看输出修改逻辑漏洞
代表你对程式操作变量的熟练度不足
当要大量开发一些不太困难的工项时(这是公司常见场景),效率会较低落
而且可能会有潜藏的 bug
甚至 unit test 也帮不了你,因为你根本就没想到要测试这些 corner case
4. 后端系统设计
要你做数据库选择,那最少该对 B+Tree, LSM Tree 等结构有概念
要你做地图系统,那 Quad-Tree, R-Tree, KD-Tree, Z-Order Indexing 也该能聊聊?
或 Cache 系统最常见的 LRU/LFU cache 选择
分布式系统最基本的 Consistent Hashing 有哪些应用,好坏是什么
这类算法可能实作很复杂导致 Leetcode 不爱考
但 Leetcode 的部分题目也是从这些概念中提炼出来(例如一堆基本 Tree 操作)
足够小到可以变成一个 10~20min 写的完的题目
假如你 Leetcode 都写的出来,想来要理解系统设计真实应用的算法也不会太困难
5. 灵活思考
这就一些奇怪的观察力考验题
看你能不能看穿他转几个弯之后,就是某个简单的算法概念
跟考益智问题的意思差不多
因为他想找真的很聪明、头脑很灵活的人
如果聪明人想得出来,大量努力刷题苦练过的普通人也想的出来
那起码这个筛法有一定机率找到我想要的人,另一些也是肯努力的人
这样对面试官来说也不错了
6. 沟通能力
这个应该也被讲烂了
很多公司也没有要你一秒给最佳解(真的题题秒解还会怀疑你是哪边去偷到题目)
而是要看你一路跟面试官怎样讨论沟通,将答案一步步优化到最佳的整个过程
你刷的题目足够,思考也会更稳定,讨论更聚焦更有方向,对答案更有自信
如果他觉得你是个一起讨论研究问题很舒服的人,就有机会给正面评价
我自己就曾在 Appier 面试被丢了一个没有优于 O(N^2) 还是 O(N^3) 解的问题
(细节部分记忆模糊了... 也可能是没有 linear time 解)
但他问的一副有的样子,一直要我再想想
我想了一阵子,还是跟他解释了几种不同思路、假设、还有分别会遇到的障碍
然后很有自信的跟他说这确实没办法
面试官就很满意了,说那是他们真实遇到的难题,也确实还找不到办法,所以跟我聊聊
后来我们又聊了很多有趣的问题,是很棒的面试经验
假如当时我不够熟练的话,一定只会一直担心我哪里没想到,做不出来完蛋了死定了
大概就不会有后续了
当然啦,如果碰到不合格的面试官,或考题乱挑一通,那以上情境都不会发生
有些面试官只会背题,甚至自己也不懂
手上有一份答案,你讲的跟答案一样就 pass
你讲不一样但同样可以过(甚至还更好)的答案,通通都算 fail
那遇到这种也只能说运气不好,这场考试毫无意义
但不代表这整个算法面试的模式没有可取之处。
作者: asd123159 (小杰)   2021-08-15 19:38:00
作者: liang30678 (QQQQ)   2021-08-15 19:43:00
作者: BlacksPig (Black Handsome s Pig)   2021-08-15 19:44:00
作者: aassdd926 (打东东)   2021-08-15 20:47:00
推好文
作者: devilkool (对猫毛过敏的猫控)   2021-08-15 20:47:00
同意
作者: imreader (imreader)   2021-08-15 21:27:00
开发需要这些算法就会去研究,但跟是否要在面试考是两回事 。不过对应不同的场景,可以使用何种算法倒是不错的考法但直接考那些 Pseudo Code,没什么意义知道用什么来解,对工程师来讲就是后续制作的小细节
作者: Lushen (wind joker!!!)   2021-08-15 21:29:00
就资方成本最低的面试的方法 可以吹成这样也不简单
作者: imreader (imreader)   2021-08-15 21:30:00
那些网络查就有死背那些 Pseudo Code 没什么意义让这些有兴趣的新手们,多贡献程式到 github 吧
作者: sunsamy   2021-08-15 21:40:00
不就是资方没能力鉴别人才,才用这样的方式方便省事,也能
作者: vi000246 (Vi)   2021-08-15 21:40:00
我连two sum是啥都不知道 我好废
作者: sunsamy   2021-08-15 21:41:00
吹成这样也不简单了,考oral language你一定上但是真的人才是不会浪费时间去搞刷题的,赚钱都来不及了
作者: jasonwung (路人JJ)   2021-08-15 21:47:00
作者: WaterLengend (Leeeeeeeeooooooo)   2021-08-15 21:59:00
作者: Lushen (wind joker!!!)   2021-08-15 21:59:00
酸的大概菜鸡吧 真的有在面试的就知道以前都要研读候选人的履历针对性问一些问题刷题就面前上去leetcode挑个题目 看一下各种解答就跟联考一样 大家都标准一致要一个一个去理解每个高中生的特质成本低呢还是同一份考卷给大家写成本低 挑出成绩高的容易呢还是大家都写同一份考卷 挑出成绩高的容易呢
作者: taipoo (要成功要积极)   2021-08-15 22:07:00
推好文
作者: viper9709 (阿达)   2021-08-15 22:24:00
这篇也太强XD
作者: shiauji (消極)   2021-08-15 22:51:00
作者: rdjs (太神啦)   2021-08-15 22:54:00
大家有空就多刷题
作者: herrowui (帝虎改)   2021-08-15 23:08:00
考试在业界一直都是最简单的做法,只是有些特质考试考不出来就是。
作者: TAMSHUI (讓我醉死在夢裡~)   2021-08-15 23:58:00
刷起来!
作者: yougigun   2021-08-16 00:01:00
同意这篇
作者: qazxws (QAZ)   2021-08-16 00:24:00
不过台湾很多公司考刷题 薪水也不怎么样就是了
作者: smily134 (father134)   2021-08-16 00:56:00
作者: askaleroux (FalconTW)   2021-08-16 01:00:00
大联盟的面试 中华职棒的薪水
作者: wawi2 (@@)   2021-08-16 01:34:00
这篇正解 从面试官的角度来看 就是这么一回事
作者: umum29 (....)   2021-08-16 01:59:00
台厂很多只是学样子 考官还不准你和他讨论答案
作者: NCUking (中大王)   2021-08-16 02:05:00
有的还直接开leetcode让你自己写 笑死
作者: wawi2 (@@)   2021-08-16 02:14:00
台厂考leetcode 就跟我文章说那些公司问脑筋急转弯依样
作者: inte629l   2021-08-16 06:49:00
作者: peter9s3b   2021-08-16 10:45:00
面试考一堆,薪水也要跟上啊
作者: Gjero   2021-08-16 10:52:00
作者: Mtcat (山地猫)   2021-08-16 11:26:00
11
作者: yiche (你若安好,便是晴天)   2021-08-16 11:54:00
推推 谢谢分享
作者: A4P8T6X9 (残废的名侦探)   2021-08-16 13:59:00
作者: leicheong (睡魔)   2021-08-16 16:47:00
但我想说实际工作的场合m需要一直看output修正结果的场合意外地多呢. 因为很多时候用户最初给的公式和预期的结果会有出入. (有时是基于前一个系统的bug)因为已交上去的报表不能改, 所以如何有效率的能datamap到用户要求的结果在实际操作也同样重要. 甚至关系到专案能不能结尾.
作者: ppc ( )   2021-08-16 17:21:00
有道理
作者: javatea (齁齁)   2021-08-16 18:48:00
公司没时间好好挑人也能被你神话成这样 你马好~ lol
作者: silence0925 (小文青)   2021-08-16 19:54:00
谁两三行会印一次阿 但十行二十行检查一次不好吗?
作者: sooge (老衲)   2021-08-16 20:10:00
高手一定都是写完一个project 才print一次
作者: wulouise (在线上!=在电脑前)   2021-08-16 21:44:00
unit test cases 写完还需要print?
作者: chuegou (chuegou)   2021-08-16 23:54:00
3现在是我的痛点 明知道有错还是想让编译器帮我检查
作者: silence0925 (小文青)   2021-08-17 00:14:00
写unit test 跟自己在写的时候先确认 不冲突吧?写完一个project 才print一次 是反串????
作者: zebraseven (Die walkuere)   2021-08-17 01:15:00
作者: ukuk666888 (逆战)   2021-08-17 17:20:00
推好文
作者: s0914714 (YA)   2021-08-19 14:32:00
刷题的重点不是在记解法吧 如果认真思考收获其实不少讨论区的神人都能想到令人叹为观止的答案但可惜的是大部分人只为了求职硬记解法
作者: chia3120 (棉被虫小柔)   2021-08-21 11:17:00
作者: paulshain04 (paulshain04)   2021-09-13 06:55:00
推 好文分享

Links booklink

Contact Us: admin [ a t ] ucptt.com