更新:已涼
其他面經傳送門:https://blog.csdn.net/zxwsbg/article/details/103499632
Team 1
找學姐內推的創新工程組,隔了三天打電話給我約了面試。
打電話後發了郵件,鏈接裏面是一個遠程共享屏幕的網頁,我寫代碼他能直接看到。
先問了我大一那個項目,差不多講了十分鐘,對面感覺不是很滿意。然後就開始寫代碼。
題目一
給定一個字符串,讓你從中間提取出一個合法的IP地址,存在vector裏面返回,如果沒有的話返回一個空的vector。
思路
感覺沒啥好做的,一眼標程。花了差不多10分鐘寫完了,各種小細節也都處理到了:字符串連續輸入.
,IP地址超過255,輸入空字符串等等。面試官說我代碼思路很清晰,沒有啥大問題。
題目二
先問我有沒有玩過黑白棋,我說沒有,他說那貪吃蛇玩過吧。讓我寫一個貪吃蛇的主要邏輯和部分函數,以及各部分用什麼數據結構維護。
思路
之前沒做過,基本都是現想的。
- 棋盤,面試官說了10*10,所以就直接拿二維數組存了(美其名曰鄰接矩陣)。
- 蛇,考慮到蛇的尾巴是會不斷延長的,所以思考了半分鐘,決定拿vector<pair<int,int> >來存。
- 豆子。直接找兩個int表示橫縱座標
然後寫了一下主要邏輯。。因爲挺簡單的,就順手寫了出來。面試官還要求我寫了一下移動函數的邏輯,沒啥問題也直接寫出來的:蛇身體的一個部分一定是移動到它前面一個部分上次所在的位置,這個還是想了兩分鐘才想出來的,再單獨判一下頭的移動。
總結
說我兩道題代碼寫的都挺好的,思路很清晰。
給我提了個建議:工程和acm不一樣,變量名命名要規範。儘管我儘量規範化了變量名的命名,但是在命名豆子座標的時候,直接習慣性的int sx,sy;
。。
然後問我有啥問題,我問他們那主要做啥:就給我介紹了一下。接着問總共幾面,他說因爲實習,就這一面,說一週內結果會發通知告訴我。
Team 2
update。就在我等第一組的消息時,創新工程組的另一波人給我打了電話,又約了一場面試。
題目
敘述的時候稍微簡化一下題面。
給定一個n*m的矩陣,矩陣中每個值表示格子的高度,矩陣的四周都可以看成無窮低。問假如每個格子都均勻的一直下雨的話,到了最後穩定狀態,哪些格子會蓄水。
思路
先理解錯了20分鐘題意。正確理解後考慮求聯通塊,連通塊的外圍是比它高的一圈。如果一個聯通快緊鄰邊界,那麼它就是不能蓄水的。
想了半天也沒想好怎麼寫。面試官提醒我可以考慮從一個格子出發,順着比它矮的地方走,如果能走的邊界就說明不能蓄水,否則就可以蓄水。
他一說我就想明白了(腦抽無解),然後花了5分鐘寫了個爆搜。因爲時間很緊,就無腦兩次DFS,第一次搜索一個格子是否能到達邊界,第二次給這個格子的聯通塊全部打上標記(標記是否能到達)。
總結
一言難盡,這次面崩了。
面試官很和藹,還問了我一些有沒有做過多人項目,git合併分治遇到衝突怎麼辦。由於我一直是把git當遠程倉庫用的,遇到問題都是直接強制推送本地分支的(哭)。還問我有沒有做過面向對象的項目,我:做過xx管理系統。
然後問了一下能實習多久(逃課也去實習啊),介紹了一下他們的項目。以及我順便問了一下上組是啥情況,說有很多candidate在面。
感覺自己涼了,安心上課叭- -