國慶後面試了老家那邊一家從事北斗衛星導航方面研究的公司,待遇在當地算是很不錯的,但由於當時手上有了幾家相對平臺較大的公司的offer,從自己長遠的發展考慮最後也只好遺憾的拒絕了。以下是部分被問到的問題分享一下。
1、講述一個你在項目中發現的最有意義的BUG及其原因(如果有的話)?
2、選幾個手機裏你常用的APP或者功能,或者幾個常見的電子產品,指出你認爲需要改進的地方?
3、五年後你不想幹的事是什麼?
4、給出你使用的最熟練的幾個開發工具及輔助工具或系統?
5、有沒有業餘開發什麼小軟件,或發些相關技術文章、評論之類的?
6、你最喜歡去的技術網站有哪些,或者是開發過程中最常去尋求解決方案的網站有哪些?特別是國外的網站。
7、產品出現了故障,有人立馬指出是你負責的模塊存在問題,你怎麼處理?
答:先整體分析是否有可能是自己負責的模塊存在問題,如果是再仔細排查找出問題並迅速解決。
8、手頭有10萬多個EXCEL表格,需要全部導入到Mysql數據庫中成爲數據庫中的一個表,你需要多長時間完成,用什麼語言、什麼方法?
9、需要做一個TCP服務器,監聽上百個客戶端,對這些客戶端進行管理、控制、監測以及通信。請問服務器的網絡相關代碼採用什麼設計思路?
答:如果是在Linux環境下可以採用IO多路複用模型中的epoll。多進程模型和多線程模型每個進程/線程只能處理一路IO,在服務器併發數較高的情況下,過多的進程/線程會使得服務器性能下降。而通過多路IO複用,能使得一個進程同時處理多路IO,提升服務器吞吐量。
而IO多路複用中select和epoll相比又有3個缺點:1、連接數受限 2、查找配對速度慢 3數據要由內核拷貝到用戶態。
實現epoll可以通過3步來完成:1、調用epoll_create()此調用返回一個句柄,之後所有的使用都依靠這個句柄來標識。2、epoll_ctl()系統調用。通過此調用向epoll對象中添加、刪除、修改事件。3、epoll_wait()系統調用。通過此調用收集收集在epoll監控中已經發生的事件。
10、推薦一個好的軟件開發人員必看的3本書?
11、如何評價下面這段代碼?
for (col = 0; col < 1000; col ++) { for(row = 0; row < 100; row ++) { table[row][col] = BlankElement(); } } |
答:
12、下面左右兩部分代碼的輸出內容一樣嗎?如果不一樣,請給出理由。
char *getm() { char p[]=”Hello World”; return p; } int main() { char *str=NULL; str=getm(); printf(str); } |
char *getm() { char *p=”Hello World”; return p; } int main() { char *str=NULL; str=getm(); printf(str); } |
答:輸出結果不一樣。
左邊代碼輸出不確定或者可能會亂碼,右邊輸出Hello World。char p[]=”Hello World”聲明一個數組,它作爲一個局部變量存放在棧區,函數執行完之後系統自動對其進行清除,所以將一個指針再指向這地址輸出會不確定。而char *p=”Hello World”聲明一個指針指向”Hello World”字符串起始位置,而且該字符串被保存在字符常量區,在程序結束後系統纔會回收這部分內存。P指向這部分內存所以程序能正常顯示改字符串。
13、寫一個字符串反轉的代碼?
14、時針一分鐘轉多少度?
時鐘一共12個數字,時針轉一圈12小時就360度,所以1小時就是360/12=30度,因爲1小時60分鐘,所以1分鐘就是30/60=0.5度!!!
15、時針分針秒針一天重合幾次?