標籤:下載 mysq 速度 如何學習 jvm 離職 編碼 單例 一個
● 簡述synchronized?Object;Monitor機制;
● 簡述happen-before規則 ;
● JUC和Object ; Monitor機制區別是什麼 ; 簡述AQS原理 ;
● 簡述DCL失效原因,解決方案 ;
● 簡述nio原理 ;
● jvm運行時資料區域有哪幾部分組成,各自作用 ;
● gc演算法有哪些 ; gc收集器有哪些 ;
● 簡述class載入各階段過程 ; class ; loader有哪些模型 ;
● 簡述常用的JDK命令列工具 ;
● 簡述位元組碼檔案組成 ;
● 講講你平常是如何針對具體的SQL做最佳化 ;
● mysql的儲存引擎有哪些,區別 ;
● gc:記憶體模型;
● gc: 記憶體回收 ;
● 多線程:如何?一個定時調度和迴圈調度的工具類。但提交任務處理不過來的時候,拒絕機制應該如何處理 ; 線程池預設有哪幾種拒絕機制 ;
● 多線程: 如何?一個ThreadLocal ;
● 說說你瞭解的一個安全執行緒隊列 ;
● Atomic包的實現原理是什麼 ;
● CAS又是怎麼保證原子性的 ;
● string分析1000次迴圈subString用了多少記憶體 ;
Java基礎
● 集合類以及集合架構;HashMap與HashTable實現原理,執行緒安全性,hash衝突及處理演算法;ConcurrentHashMap;
● 進程和線程的區別;
● Java的並發、多線程、 執行緒模式;
● 什麼是線程池,如何使用? 答:線程池就是事先將多個線程對象放到一個容器中,當使用的時候就不用new 線程而是直接去池中拿線程即可,節
● 資料一致性如何保證;Synchronized關鍵字,類鎖,方法鎖,重入鎖;
● Java中實現多態的機制是什麼;
● 如何將一個Java對象序列化到檔案裡;
● 說說你對Java反射的理解; 答:Java 中的反射首先是能夠擷取到Java 中要反射類的位元組碼, 擷取位元組碼有三種方法,
● 同步的方法;多進程開發以及多進程應用情境;
● 在Java中wait和seelp方法的不同;答:最大的不同是在等待時wait 會釋放鎖,而sleep 一直持有鎖。wait 通常被用於線程間互動,sleep 通常被用於暫停執行。
● synchronized 和volatile 關鍵字的作用;答:1)保證了不同線程對這個變數進行操作時的可見度,即一個線程修改了某個變數的值,這新值對其他線程來說是立即可見的。2)禁止進行指令重排序。
● volatile 本質是在告訴jvm 當前變數在寄存器(工作記憶體)中的值是不確定的,需要從主存中讀取;synchronized 則是鎖定當前變數,只有當前線程可以訪問該變數,其他線程被阻塞住。
1.volatile 僅能使用在變數層級;synchronized 則可以使用在變數、方法、和類層級的
2.volatile 僅能實現變數的修改可見度,並不能保證原子性;synchronized 則可以保證變數的修改可見度和原子性
3.volatile 不會造成線程的阻塞;synchronized 可能會造成線程的阻塞。
4.volatile 標記的變數不會被編譯器最佳化;synchronized 標記的變數可以被編譯器最佳化
● 伺服器只提供資料接收介面,在多線程或多進程條件下,如何保證資料的有序到達;
● ThreadLocal原理,實現及如何保證Local屬性;
● String StringBuilder StringBuffer對比;
● 你所知道的設計模式有哪些; 答:Java 中一般認為有23 種設計模式,我們不需要所有的都會,但是其中常用的幾種設計模式應該去掌握。下面列出了所有的設計模式。需要掌握的設計模式我單獨列出來了,當然能掌握的越多越好。
總體來說設計模式分為三大類:
建立型模式,共五種:Factory 方法模式、抽象原廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、面板模式、橋接模式、組合模式、享元模式。
行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解譯器模式。
● Java如何調用c、c++語言;
● 介面與回調;回調的原理;寫一個回調demo;
● 泛型原理,舉例說明;解析與指派;
● 抽象類別與介面的區別;應用情境;抽象類別是否可以沒有方法和屬性;
● 靜態屬性和靜態方法是否可以被繼承?是否可以被重寫?以及原因?
● 修改對象A的equals方法的簽名,那麼使用HashMap存放這個對象執行個體的時候,會調用哪個equals方法;
● 說說你對泛型的瞭解;
● Java的異常體系;
● 如何控制某個方法允許並發訪問線程的個數;
● 動態代理的區別,什麼情境使用;
資料結構與演算法
● 堆和棧在記憶體中的區別是什麼(資料結構方面以及實際實現方面);
● 最快的排序演算法是哪個?給阿里2萬多名員工按年齡排序應該選擇哪個演算法?堆和樹的區別;寫出快排代碼;鏈表逆序代碼;
● 求1000以內的水仙花數以及40億以內的水仙花數;
● 子串包含問題(KMP 演算法)寫代碼實現;
● 萬億層級的兩個URL檔案A和B,如何求出A和B的差集C,(Bit映射->hash分組->多檔案讀寫效率->磁碟定址以及應用程式層面對定址的最佳化)
● 蟻群演算法與蒙特卡洛演算法;
● 寫出你所知道的排序演算法及時空複雜度,穩定性;
● 百度POI中如何試下尋找最近的商家功能(座標鏡像+R樹)。
其他
● 死結的四個必要條件;
● 常見編碼方式;utf-8編碼中的中文占幾個位元組;int型幾個位元組;
● 實現一個Json解析器(可以通過正則提高速度);
● MVC MVP MVVM; 常見的設計模式;寫出觀察者模式的代碼;
● TCP的3次握手和四次揮手;TCP與UDP的區別;
● HTTP協議;HTTP1.0與2.0的區別;HTTP報文結構;
● HTTP與HTTPS的區別以及如何?安全性;
● 都使用過哪些架構、平台;
● 都使用過哪些自訂控制項;
● 介紹你做過的哪些項目;
非技術問題匯總
● 研究比較深入的領域有哪些;
● 對業內資訊的關注渠道有哪些;
● 最近都讀哪些書;
● 自己最擅長的技術點,最感興趣的技術領域和技術點;
● 項目中用了哪些開源庫,如何避免因為引入開源庫而導致的安全性和穩定性問題;
● 實習過程中做了什麼,有什麼產出;
● 5枚硬幣,2正3反如何劃分為兩堆然後通過翻轉讓兩堆中正面向上的硬幣和反面向上的硬幣個數相同;
● 時針走一圈,時針分針重合幾次;
● N * N的方格紙,裡面有多少個正方形;
● 現在下載速度很慢,試從網路通訊協定的角度分析原因,並最佳化(網路的5層都可以涉及)。
HR問題匯總
● 您在前一家公司的離職原因是什嗎?
● 講一件你印象最深的一件事情;
● 介紹一個你影響最深的項目;
● 介紹你最熱愛最擅長的專業領域;
● 公司實習最大的收穫是什麼;
● 與上級意見不一致時,你將怎麼辦;
● 自己的優點和缺點是什嗎?並舉例說明?
● 你的學習方法是什麼樣的?實習過程中如何學習?實習項目中遇到的最大困難是什麼以及如何解決的;
● 說一件最能證明你能力的事情;
● 針對你你申請的這個職位,你認為你還欠缺什麼;
● 如果通過這次面試我們單位錄用了你,但工作一段時間卻發現你根本不適合這個職位,你怎麼辦;
● 項目中遇到最大的困難是什嗎?如何解決的;
● 你的職業規劃以及個人目標;未來發展路線及求職定位;
● 如果你在這次面試中沒有被錄用,你怎麼打算;
● 評價下自己,評價下自己的技術水平,個人代碼量如何;
● 通過哪些渠道瞭解的招聘資訊,其他同學都投了哪些公司;
● 業餘都有哪些愛好;
● 你做過的哪件事最令自己感到驕傲;
● 假如你晚上要去送一個出國的同學去機場,可單位臨時有事非你辦不可,你怎麼辦;
● 就你申請的這個職位,你認為你還欠缺什麼;
● 當前的offer狀況;如果BATH都給了offer該如何選;
● 你對一份工作更看重哪些方面?平台,技術,氛圍,城市,money;
● 理想薪資範圍;杭州崗和北京崗選哪個;
● 理想中的工作環境是什麼;
● 談談你對跳槽的看法;
● 說說你對行業、技術發展趨勢的看法;
● 實習過程中周圍同事/同學有哪些值得學習的地方;
● 家人對你的工作期望及自己的工作期望;
● 如果你的工作出現失誤,給本公司造成經濟損失,你認為該怎麼辦;
● 若上司在公開會議上誤會你了,該如何解決;
● 是否可以實習,可以實習多久;
● 在五年的時間內,你的職業規劃;
● 你看中公司的什嗎?或者公司的那些方面最吸引你。
java面試題