阿里JAVA面試分享經驗

基礎篇java

參考這裏的面試題:面試題寫在後面了mysql

能回答上百分之七十,基礎的廣度就算OK了。若是達不到,那麼缺什麼就趕忙補什麼。廣度達到了,還須要對個別熱點問題有深度。每一個人的精力都有限,能夠適當挑選兩個熱點問題進行深刻挖掘。好比HashMap,要不只僅可以說上來源碼是什麼去實現的,還要了解JDK1.7版本到1.8版本都作了哪些改進,爲何這麼改進,ConcurrentHashMap怎麼實現的,針對併發場景都作了哪些優化措施,JDK1.7和1.8的實現有什麼差別。瞭解這些可能須要花費很大精力。可是,面試的時候一但問到了這個你很是精通的知識點,就基本進入你的主場了。這個能起到一槌定音的做用,給面試官留下極強的印象,甚至直接決定了這次面試的成敗。所以,至少準備那麼一兩個很是精通的知識點,必定不要多,但要比面試官和其餘求職者都要精通。這個賭的就是運氣,只要在一個問題上能給面試官上一課,就能讓對方產生「你很厲害」的錯覺。linux

全部基礎知識都要作好筆記,面試前多回顧下,在配合刷下題,問題就不大了。nginx

項目篇git

要回答好項目問題,核心就是要提早作好充足的準備。首先,仔細回顧本身作過的項目。而後挑選最有價值的部分,寫一篇關於這個項目的總結性文檔,要講清楚這個項目的架構,設計思路。其次是努力回想當時遇到的難點,踩過的坑,以及本身怎麼思考和應對的,還有對項目後續改進的思考。這個很是重要,必定寫下來。文檔寫出來後,還要反覆提煉和補充。面試的時候就以此文檔爲綱領,方能作到侃侃而談,從容應對。程序員

情商篇web

面試的時候,可能會穿插一些考察性格的問題。好比,問你爲何離職/想換工做,對技術和業務怎麼看,對咱們公司有什麼瞭解,對咱們的業務有什麼瞭解,你有什麼想問個人,你以爲本身有什麼優勢/缺點。作技術的同窗每每在情商方面有所欠缺,若是沒有準備的話,面試時一不當心說錯一句話就可能致使前功盡棄。尤爲在阿里,HR是有一票否決權的。 那麼,應對此類問題的第一點就是提早預防,能夠提早拿張紙,猜測對方可能會問的問題,把標準答案寫出來,反覆推敲,而後背下來便可。好比,「你以爲本身有什麼優勢」這個問題,我當時的標準答案就是,「我以爲人最難了解的就是本身,因此我想借用我前領導對個人評價,XXX是個......的人」。個人這個標準答案是基於 「第三方的評價更有可信度」 這個原理來設計的。第二點,回答問題的時候表現的謙虛一點便可,並且千萬不要有負能量。好比「爲何離職/想換工做」,這個問題,不要去吐槽公司或者同事,或者表達情緒上的不滿。要儘可能展示出本身好學上進的一面,這一點很重要。面試官會把對你的印象記錄在案的,包括你的優勢和缺點。所以即使技術達不到要求,也儘可能展示性格上的優勢。面試

阿里面試流程redis

面試通常是四到五面,以電話面試爲主。最後一輪面試時HR面試,因此只要挺過前面的技術面試通常就OK了。第一輪是考察基礎,第二輪開始考察項目,溝通表達能力。第三四輪會可能有編程,要求現場寫代碼,或者線下完成一個指定的項目。面試官的級別在p6-p9之間,通常隨着面試流程的推動而升高。技術面試經過後就是HR面了,這一輪主要考察價值觀。全部面試結束後,就是一個漫長的等待了,期間會有體檢,背景調查,而後發offer。這個流程會有一個月的時間,比較久。須要注意的是,面試過程當中必定要保證誠實,不能有半點弄虛做假。由於一但背景調查的時候發現說謊了,不但offer會取消,還會記錄到人才庫裏。再有一點,約好了的面試不能隨意爽約,這個也會永久記錄。你的每次面試的過程都會詳細的記錄在人才庫裏的,所以儘可能不要留下污點,以避免影響之後的面試。算法

面試題

本人是作java開發的,這是我參加58,搜狐,搜狗,新浪微博,百度,騰訊文學,網易以及其餘一些小的創業型公司的面試常被問的問題,固然有重複,弄清楚這些,相信面試會輕鬆許多。

  1. junit用法,before,beforeClass,after, afterClass的執行順序

  2. 分佈式鎖

  3. nginx的請求轉發算法,如何配置根據權重轉發

  4. 用hashmap實現redis有什麼問題(死鎖,死循環,可用ConcurrentHashmap)

  5. 線程的狀態

  6. 線程的阻塞的方式

  7. sleep和wait的區別

  8. hashmap的底層實現

  9. 一萬我的搶100個紅包,如何實現(不用隊列),如何保證2我的不能搶到同一個紅包,可用分佈式鎖

  10. java內存模型,垃圾回收機制,不可達算法

  11. 兩個Integer的引用對象傳給一個swap方法在方法內部交換引用,返回後,兩個引用的值是否會發現變化

  12. aop的底層實現,動態代理是如何動態,假若有100個對象,如何動態的爲這100個對象代理

  13. 是否用過maven install。 maven test。git(make install是安裝本地jar包)

  14. tomcat的各類配置,如何配置docBase

  15. spring的bean配置的幾種方式

  16. web.xml的配置

  17. spring的監聽器。

  18. zookeeper的實現機制,有緩存,如何存儲註冊服務的

  19. IO會阻塞嗎?readLine是否是阻塞的

  20. 用過spring的線程池仍是java的線程池?

  21. 字符串的格式化方法 (20,21這兩個問題問的過低級了)

  22. 時間的格式化方法

  23. 定時器用什麼作的

  24. 線程如何退出結束

  25. java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區別

  26. ThreadLocal的使用場景

  27. java的內存模型,垃圾回收機制

  28. 爲何線程執行要調用start而不是直接run(直接run,跟普通方法沒什麼區別,先調start,run纔會做爲一個線程方法運行)

  29. qmq消息的實現機制(qmq是去哪兒網本身封裝的消息隊列)

  30. 遍歷hashmap的三種方式

  31. jvm的一些命令

  32. memcache和redis的區別

  33. mysql的行級鎖加在哪一個位置

  34. ConcurrentHashmap的鎖是如何加的?是否是分段越多越好

  35. myisam和innodb的區別(innodb是行級鎖,myisam是表級鎖)

  36. mysql其餘的性能優化方式

  37. linux系統日誌在哪裏看

  38. 如何查看網絡進程

  39. 統計一個整數的二進制表示中bit爲1的個數

  40. jvm內存模型,java內存模型

  41. 如何把java內存的數據所有dump出來

  42. 如何手動觸發全量回收垃圾,如何當即觸發垃圾回收

  43. hashmap若是隻有一個寫其餘全讀會出什麼問題

  44. git rebase

  45. mongodb和hbase的區別

  46. 如何解決併發問題

  47. volatile的用途

  48. java線程池(好像以前個人理解有問題)

  49. mysql的binlog

  50. 代理模式

  51. mysql是如何實現事務的

  52. 讀寫分離什麼時候強制要讀主庫,讀哪一個從庫是經過什麼方式決定的,從庫的同步mysql用的什麼方式

  53. mysql的存儲引擎

  54. mysql的默認隔離級別,其餘隔離級別

  55. 將一個鏈表反轉(用三個指針,可是每次只發轉一個)

  56. spring Aop的實現原理,具體說說

  57. 什麼時候會內存泄漏,內存泄漏會拋哪些異常

  58. 是否用過Autowire註解

  59. spring的注入bean的方式

  60. sql語句各類條件的執行順序,如select, where, order by, group by

  61. select xx from xx where xx and xx order by xx limit xx; 如何優化這個(看explain)

  62. 四則元算寫代碼

  63. 統計100G的ip文件中出現ip次數最多的100個ip

  64. zookeeper的事物,結點,服務提供方掛了如何告知消費方

  65. 5臺服務器如何選出leader(選舉算法)

  66. 適配器和代理模式的區別

  67. 讀寫鎖

  68. static加鎖

  69. 事務隔離級別

  70. 門面模式,類圖(外觀模式)

  71. mybatis如何映射表結構

  72. 二叉樹遍歷

  73. 主從複製

  74. mysql引擎區別

  75. 靜態內部類加載到了哪一個區?方法區

  76. class文件編譯後加載到了哪

  77. web的http請求如何總體響應時間變長致使處理的請求數變少,該如何處理?用隊列,當處理不了那麼多http請求時將請求放到隊列

中慢慢處理,web如何實現隊列

  1. 線程安全的單例模式

  2. 快速排序性能考慮

  3. volatile關鍵字用法

  4. 求表的size,或作數據統計可用什麼存儲引擎

  5. 讀多寫少可用什麼引擎

  6. 假如要統計多個表應該用什麼引擎

  7. concurrenhashmap求size是如何加鎖的,若是剛求完一段後這段發生了變化該如何處理

  8. 1000個蘋果放10個籃子,怎麼放,能讓我拿到全部可能的個數

  9. 可重入的讀寫鎖,可重入是如何實現的?

  10. 是否用過NIO

  11. java的concurrent包用過沒

  12. sting s=new string("abc")分別在堆棧上新建了哪些對象

  13. java虛擬機的區域分配,各區分別存什麼

  14. 分佈式事務(JTA)

  15. threadlocal使用時注意的問題(ThreadLocal和Synchonized都用於解決多線程併發訪問。可是ThreadLocal與synchronized有本質的區別。synchronized是利用鎖的機制,使變量或代碼塊在某一時該只能被一個線程訪問。而ThreadLocal爲每個線程都提供了變量的副本,使得每一個線程在某一時間訪問到的並非同一個對象,這樣就隔離了多個線程對數據的數據共享。而Synchronized卻正好相反,它用於在多個線程間通訊時可以得到數據共享)

  16. java有哪些容器(集合,tomcat也是一種容器)

  17. 二分查找算法

  18. myisam的優勢,和innodb的區別

  19. redis能存哪些類型

  20. http協議格式,get和post的區別

  21. 可重入鎖中對應的wait和notify

  22. redis能把內存空間交換進磁盤中嗎(這個應該是能夠的,可是那個面試官非跟我說不能夠)

  23. java線程池中基於緩存和基於定長的兩種線程池,當請求太多時分別是如何處理的?定長的事用的隊列,若是隊列也滿了呢?交換進磁盤?基於緩存的線程池解決方法呢?

  24. synchronized加在方法上用的什麼鎖

  25. 可重入鎖中的lock和trylock的區別

  26. innodb對一行數據的讀會枷鎖嗎?不枷鎖,讀實際讀的是副本

  27. redis作緩存是分佈式存的?不一樣的服務器上存的數據是否重複?guava cache呢?是否重複?不一樣的機器存的數據不一樣

  28. 用awk統計一個ip文件中top10

  29. 對錶作統計時可直接看schema info信息,即查看錶的系統信息

  30. mysql目前用的版本

  31. 公司經驗豐富的人給了什麼幫助?(通常boss面會問這些)

  32. 本身相對於同樣的應屆生有什麼優點

  33. 本身的好的總結習慣給本身從此的工做帶了什麼幫助,舉例爲證

  34. 原子類,線程安全的對象,異常的處理方式

  35. 4億個int數,如何找出重複的數(用hash方法,建一個2的32次方個bit的hash數組,每取一個int數,可hash下2的32次方找到它在hash數組中的位置,而後將bit置1表示已存在)

  36. 4億個url,找出其中重複的(考慮內存不夠,經過hash算法,將url分配到1000個文件中,不一樣的文件間確定就不會重複了,再分別找出重複的)

有1萬個數組,每一個數組有1000個整數,每一個數組都是降序的,從中找出最大的N個數,N<1000

  1. LinkedHashmap的底層實現

  2. 類序列化時類的版本號的用途,若是沒有指定一個版本號,系統是怎麼處理的?若是加了字段會怎麼樣?

  3. Override和Overload的區別,分別用在什麼場景

  4. java的反射是如何實現的

一個程序員學習平臺分享給大家,讓你在實踐中積累經驗掌握原理。主要方向是JAVA工程師。若是你想拿高薪,想突破瓶頸,想跟別人競爭能取得優點的,想進BAT可是有擔憂面試不過的,能夠加個人Java學習交流羣:450936584

注:加羣要求

一、大學學習的是Java相關專業,畢業後面試受挫,找不到對口工做能夠 二、在公司待久了,如今過得很安逸,但跳槽時面試碰壁。須要在短期內進修、跳槽拿高薪的 三、參加過線下培訓後,知識點掌握不夠深入,就業困難,想繼續深造 四、已經在Java相關部門上班的在職人員,對自身職業規劃不清晰,混日子的 五、有必定的C語言基礎,接觸過java開發,想轉行的 小號勿擾,不喜勿加

相關文章
相關標籤/搜索