說真的我覺得這些細節並不重要,國立資訊相關科系畢得了業的都唸過,碩士班更不用說
但工作幾年後還能背得熟的我相信不到10%,可是這影響他們工作效率嗎?一點也不
就算忘了九成九,回去google一下十幾二十分鐘就懂了,誰工作不用google?
現在又不是考入學考,要考誰過目不忘背書背得滾瓜爛熟嗎?不用吧
我問的話這種學科的東西我只會問非常基本的,就是那種只要你看過一輩子都不會忘的
像是演算法複雜度是什麼,divide-and-conquer大概是什麼意思
db transaction或許會問,但就到此為止了
即使答得零零落落,知道有這玩意,大概是在幹麼的就行了
但這絕對是我問的所有問題裡最不重要的一塊
那哪些才是我問的重點?
1. 人格特質
喜不喜歡做這行?將來打算怎麼走?
平常會不會自己進修?最近在看什麼技術的書或是網路文章?
另外會很重視團隊合作能力還有領導能力
所謂領導能力不一定是說要當過team lead才會有
就算只是學校社團當個幹部,辦過活動,甚至線上遊戲當過大型公會幹部都行
就算都沒有以上經驗,實際生活中或是做案子裡也能以團隊成員的身份展現領導力
例如說說服長官採用某某新技術或是tool/framework,並一路當先鋒帶團隊達陣
那至少展現你有說服長官的嘴砲實力
以及你有帶隊往前衝並且讓人願意跟隨的能力,即使你沒掛個team lead的頭銜
甚至該說就是沒位子沒權力還能辦到才難,沒權力都能這樣,有權力還不飛天了嗎
這些能力比能不能背熟某某技術細節重要得多了
2. 軟體工程
OO觀念熟不熟?版本控制會不會用?debug怎麼做?profiler使用經驗?
Agile有沒有經驗?TDD有使用過嗎?怎麼寫testable codes?
執行Agile過程中有沒有遇到什麼問題?你怎麼處理?
理論的Agile跟你實務經驗做的Agile差距在哪邊?
你怎麼做refactor?技術債你是怎麼對待跟處理的?
有時間的話可能還會準備幾段code給對方看,讓對方指出架構上問題在哪
從OO跟TDD的角度要怎麼修改會比較好
如果要refactor要怎麼refactor
另外DevOps跟Continuous Delivery有經驗大加分
以上都不是是非題或是填空題,而是申論題
這些東西才是真正每天都在用的,而且學校幾乎都不教,要多年實務經驗的才會熟
資深工程師跟菜鳥最大差距就在這邊,這也是我判斷一個人技術能力高低最重要的依據
絕對不是某某語言有多熟,多冷僻的語法都能背出來,還是某某學科多厲害
某某語言細節google就有,而且語言很多三年內就洗掉了,紅的能超過十年也不多
就算某某語言不是很熟,一般熟其他語言的資深工程師,頂多幾個月時間就能摸熟了
但以上軟體工程的東西絕對是一聽就知道多少年功力,沒功力給你google也沒用的
公司花錢請人不就是要找這種無法google,需要多年實務經驗才能練成的技能嗎?
那我面試問那些google得到的東西幹麼?