好吧,雖然面試過了好幾天了,還是來記錄下吧:
投的是嵌入式軟件工程師實習職位:在面試半個月前收到一次Intel的電話面試,電面通過后說為了考驗我的學習能力,讓我自學Perl語言,並且做一個關於Pel的PPT到面試時演示,還說過段時間會把公司地址發我郵箱,面試時間定在了某個禮拜的星期二下午2點。於是乎我就在圖書館借了本 小駱駝書來看,學了段時間,可是遲遲木有收到Intel發來的地址和具體部分的郵件。 另外我當時木有記下他們的電話和Email,所以也聯系不到他們。(這是個教訓啊,以后得記的把接到的每個通知電面通過的電話記下,以防萬一)。加上學校課程和工程實踐也很忙,我就放下了Perl的學習,也覺得Intel可能已經有更合適的人選,也就把我忘了。可是,到了約定的那天中午12點,突然接到Intel電話,問我有沒有去他們公司。那時候。。。覺得。。。好無語。。。都木有發郵件給我,都沒通知地址和具體部門(當然自己也有錯)。就這樣延遲了面試時間,我繼續撿起那邊Perl狂看,並做了一晚上的PPT。
面試那天:要到上海紫竹科技園時,在公交上突然看到了上交閔行校區,那可是我的傷心地,熟悉的拖鞋門。。。不談了。
下車后,首先見到的是 Microsoft,又傷心了,研究生期間的處女筆試就交給它了,氣人的是身邊的同學有的收到了拒絕信,有的收到了通過信。可是我卻什么都沒收到,你倒是拒了我也好,可是就這樣把我給忽略掉了。我轉身就奔向了隔壁的Intel。
在客廳等了半個小時后,被一MM,接到了面試房間:里面坐着兩個面試官,問好后,讓我坐在了靠近白板的地方(你懂的,意味着要在白板上寫代碼)。
兩個面試官每人前面一台筆記本,下面就開始狂問了:
1:linux中怎么查看一個進程打開了多少文件或者哪些文件。
我答:先查看 /proc目錄下面的進程號,然后。。。(我突然想不起來下面有什么了,電腦在他們那邊,要是給我ls下也好啊),我一邊說着,面試官一遍操作着,最后他自己也沒搗鼓出來。一回校就迫不及待試了下,進入某個進程號目錄下后看到了fd,ls下,就看到了N個fd號,也就是文件描述符,也就可以數下有幾個fd號,也就知道了 一個進程打開了幾個文件,當時木有回答上來,就說了一半。
2:說下Open系統調用的過程。
從中斷講到了系統調用,最后講到了file_operation.感覺很多細節東西都忘了,就說了個大概~面試官也不問了。
3:文件操作read怎么實現的,要注意哪些。
就簡單說了下用戶態和內核態數據的復制,問注意哪些時,沒想到太多,回來之后看了下內核代碼才知道,要注意的東西太多了,內存檢測等等。
4:講下印象最深的項目,解決了哪些問題,怎么實現的。
這個一下把我問住了,我不知道講哪個項目好,當時說了句,可不可以把所有項目都講下一個一個的講,其中一個面試官直接無語了,說他們時間有限。
唉~一點都沒准備啊,說好的Perl呢,說好的PPT呢。就簡單講了下最近做的工程實踐項目了。
5:進程、線程區別
好吧,這個是我目前唯一能自信的講出來的。balabala講了一堆。
6:在白板上寫個代碼,實現:給定一個整型數組,輸入一個數字N時,要輸出數組中第N大的數,並把它原來的下標輸出來,要求用C語言實現,時間復雜度要求不超過O(n^2),20分鍾時間。
當時心里想着,終於該我發揮的時候了,第一次在白板上寫代碼,很不適應的說。我上來就寫了個冒泡排序,逆序排列數組,當時就想着怎么才能記下它們原來的下標呢,在冒泡的過程中,它們的下標肯定是變了的,突然想到,定義一個數組存放它們最原始的下標,在冒泡中元素交換位置時,把對應的下標也互換位置,這樣也就相當與下標跟着元素走了。心里一陣狂喜,寫好了。
面試官看了下,第一個問題就說我的冒泡寫錯了,我當時還真以為寫錯了,看了下就跟他辯論,我是逆序排序。。。好吧,他以為我要實現正序。。。
然后評價了下我的代碼,說寫的不夠好看,木有封裝好。。。
最后突然問,不用輔助空間怎么實現。 也就是說不允許定義一個存放下標的數組。
當時腦子短路了,一下子想不起來了,最后簡單聊了聊后,就讓我回去等消息了。
剛一出Intel大門,突然想到了解決不用輔助空間的方法,唉~反應太遲鈍了,第一次遍歷下數組,知道了數組最大元素。INT類型的是4個字節,一般整數不會完全用完,可以用4個字節的前2個字節存放它們的下標(前提是這個數小於2^16),這樣每次冒泡時,比較它們的低16位就行了,同時下標也跟着元素的交換走了。
面試過了好幾天了,說等通知的,估計沒戲了~研究生初面就這樣結束了。~紀念下了~默哀1分鍾~
