Re: [討論] 我就問,刷題強者的實務表現?

軟工

41251

: 推 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 寫起來根本
超級無腦……)

---

對了,在 Educative 上還有一門課,介
紹那些「真實世界的例子」:

Decode the Coding Interview in Java

: Real-World Examples

https://hhp.li/HpG0D


不一定要買課程,但可以直接看看目錄,
想想看這些「真實世界的問題」,你會怎
麼解?是不是真的刷題對於這些問題沒有
任何幫助?

---

除了刷題之外,坊間也流傳不少所謂的面
經(面試經驗)和解答,前陣子我一名學
弟跑來問我,順便問問我題目要怎麼回答
比較好。我看了他分享給我的文章之後,
直接跟他說
這種文章少看,你可以看題目

自己整理答案消化,但不要拿他的解答去

回答
。為什麼呢?其中有一題是這樣的:

> Python2 和 Python3 有什麼差異?


絕大多數的解答,會跟你提到那個輸入還
有輸出的差異 input(), print()

難道這個問題想要考察的就只有這樣嗎?
我跟他講說,如果我是面試官,問出這題
之後,想要知道的是:

(1) 對方知不知道這兩個版本有差?
(2) 對方知不知道改進了什麼?為什麼?
(3) 對方知不知道在開發上有什麼影響?
(4) [延伸] 為什麼不少系統內建 2.7?
(5) [延伸] 要怎麼處理版本差異?

我想聽到的不會是 print 加不加括號這
件事,而是他能不能跟我說一個是函數、
一個是陳述式,為什麼?有什麼差別?我
想知道更進一步的回答,是 import 改成
以絕對路徑處理,還有預設編碼從 ASCII
換成了 UTF8 編碼,還有這兩個版本在處
理表示文字序列的類型時,在 bytes 和
str 的操作上需要考慮什麼?

而不是網路上看了題目,回答那種解答,

那才叫八股。


--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.109.67 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1664946084.A.661.html
abccbaandy1樓既然幫助這麼大,那如果FANG不考刷題,你還會刷嗎? 10/05 13:06
你這問題有點好笑,在 LeetCode 還沒流 行的時候,那時候就不少人會寫 UVa OJ 作為練習了……除了 LeetCode 之外,還 有很多適合練習的地方;比如對 TDD 應 該或多或少聽過 Coding Dojo/Kata 這個 詞,這也是一種練習還有磨練自己開發能 力的方式,你也可以去 Codewars 上面練 習呀。 除此之外,你如果覺得 LeetCode 千篇一 律很無聊,有些有趣的東西呀:
從 2015 開始,每年十二月的時候一天一 題直到 25 題完成剛好過聖誕節。自己在 網路上搜一下不少老外都有在玩,有的還 會給自己下一些規則,比如每一天都用不 同的程式語言。
同時練習開發還有鍛鍊數學思考,裡面的 難度跨幅有點大,討論區裡面很多大佬( LeetCode 的討論區也很棒啦)
peter982樓1樓有不少實務經驗 我想問為什麼大同電鍋煮的米飯比電子 10/05 13:10
peter983樓鍋好吃?我在美國不能沒有大同電鍋 想了解 10/05 13:10
chatnoir4樓我很愛大同電鍋, 但日本電子鍋煮的飯比較好吃 (亂入 10/05 13:14
alihue5樓真的比較好吃嗎?有做過盲測? 10/05 13:21
Dven6樓這篇專業 10/05 13:45
MoonCode7樓 10/05 14:29
Ericz70008樓 10/05 14:32
josephroyal9樓認同這篇的觀點 反刷題仔很喜歡說面試官能力不夠才只 10/05 14:38
josephroyal10樓能考刷題 但很多面試官更在乎的是面試過程中溝通表達 10/05 14:38
josephroyal11樓還有思考的過程 10/05 14:38
Firstshadow12樓做大同電鍋的人有刷題嗎== 10/05 14:41
ohmylove34713樓微積分算是大學裡的加減乘除吧,列必修蠻合理的 10/05 14:50
superpandal14樓你這是解題思維 現實是完成需求的思維 而且套路通常 10/05 14:51
superpandal15樓不多 多數人都是寫的快堆屎山 大系統能不動就不動 10/05 14:52
你講這個自己都不覺得有趣嗎?現實裡那 些早早進去卡位的,是要找人進來寫更多 屎?還是希望新的東西不要那麼屎?還是 希望進來的人有能力可以清一下陳年硬屎 ? 都知道舊有系統是坨屎,不能挑一下人讓 這坨屎香一點?
superpandal16樓我都會想怎麼做更好 XD 10/05 14:54
所以沒毛病啊,現實已經有很多屎,但不 想找人進來只會拉屎。用可以量化的方式 找人,合理吧?
superpandal17樓現實是多數老屁股覺得這屎山很香 不要動 只有新的需 10/05 15:00
superpandal18樓求才可能交給新來的人 重構機會不是很多 就算給你機 10/05 15:01
superpandal19樓會重構還要被檢討 屎山都是可以搞人論kpi的 10/05 15:02
那個…你確定要這樣繼續說下去?會打到 很多反刷題仔的臉耶,意指那些實作仔寫 的不過就是屎山而已,沒什麼好吹噓的…
superpandal20樓這也是內卷現象 大公司靠入職前一堆門檻擋人 小公司 10/05 15:04
superpandal21樓靠一些說不清的標準擋人 10/05 15:04
superpandal22樓當然應該有公司都有以上兩者 都可以理解 但如果遇到 10/05 15:06
superpandal23樓了會很不爽就是 我相信他們可以做的更好 但是他們可 10/05 15:07
superpandal24樓能見過一堆公司而且家裡有子女才整天搞這個的 我都 10/05 15:08
superpandal25樓覺得要就要不要就不要 不需要再搞什麼優越 10/05 15:08
當然要有門檻啊,不然阿貓阿狗都進去喔 ?現在這種機制已經很和善了,真的要給 你門檻,先看你學歷再看你 GPA再看經歷 是不是同等級公司,那才叫做搞優越。
superpandal26樓我沒說不需要有門檻... 10/05 15:10
superpandal27樓我贊成的事應該讓不同標準門檻存在 具有多樣性 10/05 15:14
superpandal28樓 10/05 15:14
superpandal29樓現在這一串討論一堆人意圖使自己擅長的獨大 你死我活 10/05 15:19
superpandal30樓的節奏 10/05 15:20