企業是如何選撥高素質工程師(進階軟體工程師or架構師)的?除了腦筋急轉彎那種簡單的開場白外,還需要更專業,更深邃的交流。這裡,我把自己平時的思考備案分享給大家,歡迎讨論~
基礎技術篇(資料結構,并發程式設計,jvm記憶體調優等)
1. 談談對隊列offer,poll,peek操作的了解(實作,算法複雜度)
2. 談談對hashmap,concurrenthashmap,concurrentlinkedqueue,abstractqueuedsynchronizer的了解(實作,核心操作,算法複雜度,使用場景)
3. 談談對字元集的了解
4. 談談對nio程式設計模型的了解
5. 談談tcp網絡程式設計可能會遇到的問題
6. 談談對序列化的了解
7. 談談對softreference,weakreference,phantomreference的了解
8. 談談對異常的了解
9.談談對設計模式的了解
10.談談對類加載器原理的了解,child first/parent first模型優缺點如何?
11.談談對asm的了解
12.談談jvm調優經驗
13. maven的phase,goal有什麼差別?lifecycle呢?git是如何pull request的
全局統籌篇(技術深度,廣度,前沿技術敏感度,工作習慣,架構觀)
1. 工作中,除了對j2se libarary的使用外,你還會用到哪些工具庫?(腳手架問題,用好了極大提升效率,也可考察出其知識面)選擇這些庫的标準是?舉幾個簡單例子吧
2. 精度丢失的問題,遇到過嗎?(float,double,bigdecimal) 如何避免?
3. 序列化中需要注意什麼問題?對時間的序列化,又需要考慮什麼?
4. apache,ngix,lighttpd怎麼解決高并發通路的?采用什麼模型?優缺點是?如何調優?poll,select,epoll模型在各個web server中的實作情況?
5. memcached 是分布式緩存,還是集中式緩存?實施中需要注意什麼問題?
6. 工作中,設計模式用的多嗎?怎麼用?visitor模式應用中需要注意些啥?
7. 談談你對架構的了解。工作中,你是如何去架構設計一些系統的?(可以從基礎架構方面談起,也可以談談是如何幫助團隊成員做設計評審的)
8. 架構vs.設計?如果讓你設計一個ioc容器,如何用優雅的架構保證你的設計?
9. 并發程式設計中需要注意些什麼?哪種情況下線程可以reentrant?如何優雅的結束線程?啪啦啪啦一堆堆問題
10. reactor模式和proactor模式了解多少,web server中有哪幾種高性能io模式?
11. 曾經參與過或者分析過哪些開源架構,帶給你最大的感受是什麼?
12 如果公司讓你設計一套應用監控平台(java平台),你覺得會碰到哪些技術難點(架構或細節層面均可談談。可以談談java agent技術)?
13. 談談你對consistent hashing algorithm的了解,如何設定虛拟節點,如何選擇hash算法(更高的命中率,有效的故障轉移)?
14. 歸并排序,堆排序工作中有用到嗎?如何應用的?
15. 談談你sql優化方面的經驗?可以從執行計劃談起,對choose,rule.cost進行剖析
靈活流程篇(團隊建設,人才培育,基礎建設)
1. 靈活思想能為你工作中帶來什麼?怎麼了解coding-pair的?
2. 人,而不是流程或方法決定了軟體開發過程的成功,談談你的看法?
3. 用jira來跟蹤管理我們的問題和需求;用confluence來聚集團隊的想法、計劃和知識?在此過程中,你遇到了哪些問題;
4. 持續內建,版本控制方面,你是如何做的?
5. 你是如何推進項目執行的?
6. 招聘是一個請進來的過程,為了找到更靠譜的人才,你的做法是?請進來之後,又是如何幫助他們成長的?
參考文獻: