面試總結
第一輪:電話初面
第二輪:技術面談【技術職位儘量避免多談管理上的工作】
第三輪:高管複試
第四輪:HR最後確認
一面:首先確認對阿里的意向度(如果異地更會考慮對工作地點(杭州)的意向度!阿里很看重這個);其次面試官一般會針對您所做過的項目來做具體技術的交流,會比較關注個人對項目細節是不是掌握到位,主要考察java的技術基礎和原理,比如Spring框架以及數據庫和JVM三個方面,也會交流到分佈式、線程池的實現等等,重點考察是不是有比較鑽研技術和技術上的亮點【不一定每個面都很厲害但一定要有亮點】;
二面:技術面,根據項目深入的瞭解技術實力,瞭解您的知識面,瞭解您的問題解決能力以及技術靈活運用能力,也通過這一過程考察團隊合作能力、學習主動性和創新性,可以挑選2-3個做過的有典型性的項目做一個仔細 技術回顧和自己獨到的理解【這會成爲您的加分項】;
三面:他們最後的高管複試會涉及到相關的技術問題,大部分是對你的整體價值觀做宏觀的把控(比如上進心,責任心,心態,工作激情等)
HR確認:基本就是從大方向瞭解一下您的心態、抗壓能力,工作中的角色、未來大致的規劃以及對阿里的意向度
【技術基礎以及的問題多看看書準備下就行了,不懂的直接說不懂沒關係的;在項目細節上多把關一下,根據項目有針對性的談自己的技術亮點,能表達清楚,可以引導面試官來問你比較擅長的技術問題,個人就可以盡情發揮】
阿里比較喜歡的人才特點:對技術有熱情,強硬的技術基礎實力;主動,善於團隊協作,善於總結思考;
阿里面試問的問題會比較底層
Java內存結構,spring的aop的實現方法,java數據庫問題定位和性能調優;
關於Java異常的續承層次結構,講述異常的續承關係;
java中重載和重寫有什麼區別,分別用什麼關鍵字;
關於分佈式消息隊列,分佈式緩存;
關於hashmap源碼實現, jdk
關於設計模式,uml,jvm 內存回收機制問題
java線程如何啓動?java中加鎖的方式有哪些,怎麼個寫法?
對樂觀鎖和悲觀鎖的理解;
ORACLE中的SQL如何進行優化,都有哪些方式?事務有哪些特性,在ORACLE中隔離有哪些級別?
介紹一下自己最近做的一個典型的項目;
在項目中遇到了哪些問題,自己是如何解決的 ;
目前系統支撐的用戶量是多少,假如用戶量提升10倍,系統會出現什麼樣的問題,如何重新設計系統【這裏主要是想了解您的問題預見能力以及問題解決能力,考查思路】
使用memcached是一個什麼樣的原理
如何存放數據到memcached集羣中,介紹一下這個過程。跟進的問題,講一下一致性哈希算法的實現原理。
JVM中堆是如何管理的,JVM的內存回收機制,介紹一下
分佈式事務實現方式
熱點賬戶問題(項目中有就會問)
第一輪技術面試(電面)涉及Java基礎點(可參考):
session
java鎖
gc原理
hashmap
listlink arraylist 區別
aop 原理
多線程
kafka 原理和容錯
spark hadoop 原理
redis 同步機制
classLoader 機制
Http 協議
cookie的限制
HashMap key的要求 , hashcode一致兩個對象是否相等
JVM的原理
涉及面較廣,包括談到項目上遇到的問題,以此深入探討。
旁聽面試-java:
人選介紹目前目前技術管理側重;
對阿里推薦對應崗位的理解度;
系統設計是怎麼樣的;
做的一些架構,數據源來自於哪裏並深入問;
模塊邊界,緩存機制;
選用技術選型時,A和B的區別;
多線程如何用,有什麼好處,和進程的區別;
多線程的過程;
多線程同步的方法,X項目中如何去實現;
分佈式架構在你目前項目中的體現;
跨主機通信用過什麼,接口等;
大數據存儲;
結尾:
你自己覺得你擅長什麼,以後想走的路線,技術還是管理;
Java面試題分享:
JMS的兩種模式是那些;
富客戶端怎麼更新;
自己設計類似ESB這樣的企業數據總線應該有哪些功能;
系統架構設計;
集羣中怎麼控制session;
怎麼樣知道java存中是哪一些模塊消耗內存比較多;
應用服務器的參數調整。
下圖是我整理的關於一些面試題,分享給大家希望能有一些幫助(還有更全Java架構思維導圖)
私信架構可以領取更全高清思維導圖。還有相關視頻和學習資料免費提供~
面試題
基礎類
sleep()和wait()的區別?
synchronized同步代碼塊還有同步方法本質上鎖住的是誰?爲什麼?
synchronized和volatile的區別?
ReentrantLock和synchronized的區別?
什麼是線程安全?保障線程安全有哪些手段?
線程的有哪些狀態?
Thread的join()有什麼作用?
同步和非同步、阻塞和非阻塞的概念
銷燬一個線程的方法有哪些?
什麼是線程池,如何使用?
多線程斷點續傳的實現原理?
瞭解Java新特性
Java併發編程
在java中守護線程和本地線程區別?
線程與進程的區別?
什麼是多線程中的上下文切換?
死鎖與活鎖的區別,死鎖與飢餓的區別?
Java中用到的線程調度算法是什麼?
什麼是線程組,爲什麼在Java中不推薦使用?
爲什麼使用Executor
在Java中Executor和Executors的區別?
什麼是原子
Java Concurrency API中的Lock接口是什麼?對比同步它有什麼優勢?
什麼是Executors框架?
什麼是阻塞隊列?阻塞隊列的實現原理是什麼?如何使用阻塞隊列來實現生產者-消費者模型?
什麼是Callable和Future?
什麼是FutureTask?
什麼是併發容器的實現?
多線程同步和互斥有幾種實現方法,都是什麼?
什麼是競爭條件?你怎樣發現和解決競爭?
爲什麼我們調用start()方法時會執行run()方法,爲什麼我們不能直接調用run()方法?
Java中你怎樣喚醒一個阻塞的線程?
CycliBarriar和CountdownLatch有什麼區別?
什麼是不可變對象,它對寫併發應用有什麼幫助?
什麼是多線程中的上下文切換?
Java中用到的線程調度算法是什麼?
什麼是線程組,爲什麼在Java中不推薦使用?
爲什麼使用Executor框架比使用應用創建和管理線程好?
java中有幾種方法可以實現一個線程?
如何停止一個正在運行的線程?
notify()和notifyAll()有什麼區別?
什麼是Daemon線程?它有什麼意義?
java如何實現多線程之間的通訊和協作?
什麼是可重入鎖?
當一個線程進入某個對象的一個synchronized的實例方法後,其它線程是否可進入此對象的其它方法?
樂觀鎖和悲觀鎖的理解及如何實現?
SynchronizedMap 和 ConcurrentHashMap有什麼區別?
CopyOnWriteArrayList可以用於什麼應用場景?
什麼叫線程安全?servlet是線程安全嗎?
volatile有什麼用?能否用一句話說明下volatile的應用場景?
爲什麼代碼會重排序?
在java中wait和sleep方法的不同?
一個線程運行時發生異常會怎樣?
如何在兩個線程間共享數據?
Java中notify 和 notifyAll有什麼區別?
爲什麼wait, notify 和 notifyAll這些方法不在thread類裏面?
什麼是ThreadLocal變量?
Java中interrupted 和 isInterrupted方法的區別?
爲什麼wait和notify方法要在同步塊中調用?
爲什麼你應該在循環中檢查等待條件?
Java中的同步集合與併發集合有什麼區別?
什麼是線程池? 爲什麼要使用它?
怎麼檢測一個線程是否擁有鎖?
JVM中哪個參數是用來控制線程的棧堆棧小的?
Thread類中的yield方法有什麼作用?
Java中ConcurrentHashMap的併發度是什麼?
Java中Semaphore是什麼?
Java線程池中submit() 和 execute()方法有什麼區別?
什麼是阻塞式方法?
Java中的ReadWriteLock是什麼?
volatile 變量和 atomic 變量有什麼不同?
可以直接調用Thread類的run ()方法麼?
如何讓正在運行的線程暫停一段時間?
你對線程優先級的理解是什麼?
什麼是線程調度器和時間分片?
你如何確保main()方法所在的線程是Java 程序最後結束的線程?
線程之間是如何通信的?
爲什麼線程通信的方法wait()、notify()和notifyAll()被定義在Object 類裏?
爲什麼wait()、notify()和notifyAll ()必須在同步方法或者同步塊中被調用?
爲什麼Thread類的sleep()和yield ()方法是靜態的?
如何確保線程安全?
同步方法和同步塊,哪個是更好的選擇?
如何創建守護線程?
什麼是Java Timer 類?如何創建一個有特定時間間隔的任務?
以上的總結出來的面試以及面試問題,你們自己在看文章時,你自己想一下看,你能把那些問題都能回答上來麼?你對自己的技術感到又想到進一步的提升麼?在你約到技術上的困難以及瓶疾的時候,你能夠解決麼?不能解決的,證明你在開發的道路上,你還需要繼續努力學習,最後,想要獲取整理好的Java面試題與答案,可以加入Java貓的架構學習基地:810589193 裏面可以與大神一起交流並走出迷茫。進羣免費領取架構學習資料,看看前輩們是如何在編程的世界裏傲然前行!