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