Re: [討論] 我就問,刷題強者的實務表現?
看板Soft_Job (軟體人)作者Hsins (迅雷不及掩耳盜鈴)時間2年前 (2022/10/05 13:01)推噓24(25推 1噓 117→)留言143則, 30人參與討論串19/23 (看更多)
: 推 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
推
10/05 13:06,
2年前
, 1F
10/05 13:06, 1F
你這問題有點好笑,在 LeetCode 還沒流
行的時候,那時候就不少人會寫 UVa OJ
作為練習了……除了 LeetCode 之外,還
有很多適合練習的地方;比如對 TDD 應
該或多或少聽過 Coding Dojo/Kata 這個
詞,這也是一種練習還有磨練自己開發能
力的方式,你也可以去 Codewars 上面練
習呀。
除此之外,你如果覺得 LeetCode 千篇一
律很無聊,有些有趣的東西呀:
> Advent of Code
從 2015 開始,每年十二月的時候一天一
題直到 25 題完成剛好過聖誕節。自己在
網路上搜一下不少老外都有在玩,有的還
會給自己下一些規則,比如每一天都用不
同的程式語言。
> Euler Project
同時練習開發還有鍛鍊數學思考,裡面的
難度跨幅有點大,討論區裡面很多大佬(
LeetCode 的討論區也很棒啦)
→
10/05 13:10,
2年前
, 2F
10/05 13:10, 2F
→
10/05 13:10,
2年前
, 3F
10/05 13:10, 3F
推
10/05 13:14,
2年前
, 4F
10/05 13:14, 4F
→
10/05 13:21,
2年前
, 5F
10/05 13:21, 5F
推
10/05 13:45,
2年前
, 6F
10/05 13:45, 6F
推
10/05 14:29,
2年前
, 7F
10/05 14:29, 7F
推
10/05 14:32,
2年前
, 8F
10/05 14:32, 8F
推
10/05 14:38,
2年前
, 9F
10/05 14:38, 9F
→
10/05 14:38,
2年前
, 10F
10/05 14:38, 10F
→
10/05 14:38,
2年前
, 11F
10/05 14:38, 11F
→
10/05 14:41,
2年前
, 12F
10/05 14:41, 12F
推
10/05 14:50,
2年前
, 13F
10/05 14:50, 13F
→
10/05 14:51,
2年前
, 14F
10/05 14:51, 14F
→
10/05 14:52,
2年前
, 15F
10/05 14:52, 15F
你講這個自己都不覺得有趣嗎?現實裡那
些早早進去卡位的,是要找人進來寫更多
屎?還是希望新的東西不要那麼屎?還是
希望進來的人有能力可以清一下陳年硬屎
?
都知道舊有系統是坨屎,不能挑一下人讓
這坨屎香一點?
→
10/05 14:54,
2年前
, 16F
10/05 14:54, 16F
所以沒毛病啊,現實已經有很多屎,但不
想找人進來只會拉屎。用可以量化的方式
找人,合理吧?
→
10/05 15:00,
2年前
, 17F
10/05 15:00, 17F
→
10/05 15:01,
2年前
, 18F
10/05 15:01, 18F
→
10/05 15:02,
2年前
, 19F
10/05 15:02, 19F
那個…你確定要這樣繼續說下去?會打到
很多反刷題仔的臉耶,意指那些實作仔寫
的不過就是屎山而已,沒什麼好吹噓的…
→
10/05 15:04,
2年前
, 20F
10/05 15:04, 20F
→
10/05 15:04,
2年前
, 21F
10/05 15:04, 21F
→
10/05 15:06,
2年前
, 22F
10/05 15:06, 22F
→
10/05 15:07,
2年前
, 23F
10/05 15:07, 23F
→
10/05 15:08,
2年前
, 24F
10/05 15:08, 24F
→
10/05 15:08,
2年前
, 25F
10/05 15:08, 25F
當然要有門檻啊,不然阿貓阿狗都進去喔
?現在這種機制已經很和善了,真的要給
你門檻,先看你學歷再看你 GPA再看經歷
是不是同等級公司,那才叫做搞優越。
→
10/05 15:10,
2年前
, 26F
10/05 15:10, 26F
→
10/05 15:14,
2年前
, 27F
10/05 15:14, 27F
→
10/05 15:14,
2年前
, 28F
10/05 15:14, 28F
→
10/05 15:19,
2年前
, 29F
10/05 15:19, 29F
→
10/05 15:20,
2年前
, 30F
10/05 15:20, 30F
→
10/05 15:31,
2年前
, 31F
10/05 15:31, 31F
→
10/05 15:32,
2年前
, 32F
10/05 15:32, 32F
推
10/05 16:24,
2年前
, 33F
10/05 16:24, 33F
→
10/05 16:24,
2年前
, 34F
10/05 16:24, 34F
還有 69 則推文
還有 7 段內文
→
10/05 23:02,
2年前
, 104F
10/05 23:02, 104F
→
10/05 23:02,
2年前
, 105F
10/05 23:02, 105F
→
10/05 23:03,
2年前
, 106F
10/05 23:03, 106F
→
10/05 23:03,
2年前
, 107F
10/05 23:03, 107F
→
10/05 23:03,
2年前
, 108F
10/05 23:03, 108F
→
10/05 23:04,
2年前
, 109F
10/05 23:04, 109F
推
10/05 23:04,
2年前
, 110F
10/05 23:04, 110F
→
10/05 23:04,
2年前
, 111F
10/05 23:04, 111F
→
10/05 23:05,
2年前
, 112F
10/05 23:05, 112F
→
10/05 23:05,
2年前
, 113F
10/05 23:05, 113F
推
10/05 23:05,
2年前
, 114F
10/05 23:05, 114F
推
10/05 23:07,
2年前
, 115F
10/05 23:07, 115F
→
10/05 23:27,
2年前
, 116F
10/05 23:27, 116F
→
10/05 23:28,
2年前
, 117F
10/05 23:28, 117F
→
10/05 23:28,
2年前
, 118F
10/05 23:28, 118F
→
10/05 23:29,
2年前
, 119F
10/05 23:29, 119F
→
10/05 23:29,
2年前
, 120F
10/05 23:29, 120F
→
10/05 23:29,
2年前
, 121F
10/05 23:29, 121F
→
10/05 23:30,
2年前
, 122F
10/05 23:30, 122F
→
10/05 23:30,
2年前
, 123F
10/05 23:30, 123F
→
10/05 23:30,
2年前
, 124F
10/05 23:30, 124F
→
10/05 23:44,
2年前
, 125F
10/05 23:44, 125F
→
10/05 23:44,
2年前
, 126F
10/05 23:44, 126F
→
10/05 23:45,
2年前
, 127F
10/05 23:45, 127F
→
10/05 23:49,
2年前
, 128F
10/05 23:49, 128F
→
10/05 23:51,
2年前
, 129F
10/05 23:51, 129F
→
10/05 23:51,
2年前
, 130F
10/05 23:51, 130F
推
10/05 23:53,
2年前
, 131F
10/05 23:53, 131F
推
10/06 01:07,
2年前
, 132F
10/06 01:07, 132F
→
10/06 06:50,
2年前
, 133F
10/06 06:50, 133F
→
10/06 09:27,
2年前
, 134F
10/06 09:27, 134F
→
10/06 09:28,
2年前
, 135F
10/06 09:28, 135F
→
10/06 09:29,
2年前
, 136F
10/06 09:29, 136F
→
10/06 09:31,
2年前
, 137F
10/06 09:31, 137F
→
10/06 09:31,
2年前
, 138F
10/06 09:31, 138F
推
10/06 14:14,
2年前
, 139F
10/06 14:14, 139F
推
10/06 23:49,
2年前
, 140F
10/06 23:49, 140F
→
10/06 23:49,
2年前
, 141F
10/06 23:49, 141F
→
10/07 09:21,
2年前
, 142F
10/07 09:21, 142F
推
10/08 19:02,
2年前
, 143F
10/08 19:02, 143F
討論串 (同標題文章)
Soft_Job 近期熱門文章
37
108
PTT職涯區 即時熱門文章
11
25