前言
上一篇文章我們完成了簡歷的編寫,接下來就該進行技術了,技術這塊主要會圍繞如下幾個方面。
1、java基礎
- 集合框架
- list與set的區(qū)別
- ArrayList、LinkedList、Vector的區(qū)別
- Map、Set、List、Queue、Stack的特點與用法
- map在for循環(huán)狀態(tài)下使用remove()為何會拋出異常
- set與list的區(qū)別
結合使用場景去描述 - 線程安全的集合類以及優(yōu)化,cow模式
- hashmap的實現(xiàn)
此處需要深入了解源碼,及hashmap多線程環(huán)境下會出現(xiàn)什么問題,這個幾乎是必問,結合jdk1.7與jdk1.8的區(qū)別 - hashtable與concurrenthashmap
concurrenthashmap結合源碼,jdk1.7與1.8的區(qū)別 - 線程安全的各種集合類,cow模式等
- final關鍵字,finally關鍵字
- 異常的分類及處理,結合aop
- 面向對象的五大職責
結合項目或者某些源碼進行描述 - classloader的加載機制
- 重寫equals時為何要重寫hashcode(),不重寫會出現(xiàn)什么問題
- java基礎類型的向上轉型,丟失精度問題
- String類為何是不可變的,string的equals方法是如何實現(xiàn)的?
- 接口與抽象類的區(qū)別,為何要這樣設計?
- 重載與重寫
- IO的優(yōu)化,NIO
- Object有哪些通用方法?
- String、StringBuffer與StringBuilder的區(qū)別
- 一致性hash
- Java對象的生命周期
2、多線程與并發(fā)
- wait()和notify()
- 多線程環(huán)境下讓3個線程依次按順序執(zhí)行,如何實現(xiàn)?
- 創(chuàng)建線程的幾種方式,應用場景?
繼承thread類,實現(xiàn)runnable或者callable接口 - 線程和進程有什么區(qū)別?
- 用 wait-notify 寫一段代碼來解決生產(chǎn)者-消費者問題?
- 用java寫一個線程安全的單例模式
double check和枚舉類型兩種方式,延伸會問為何要double-check,枚舉為何是線程安全的 - notify()與notifyAll()有什么區(qū)別?
- 如何獲得線程的堆棧信息?
- 線上服務器cpu 100%了,該如何排查問題?
- i++ 操作在多線程環(huán)境下會出現(xiàn)什么問題?怎么解決?
考慮使用AtomicInteger等相關的類 - fork-join框架是什么?
- 可重入鎖是什么,有哪些?
- 同步方法與同步代碼塊,有何區(qū)別,使用場景?
- 同步代碼塊中拋出異常會發(fā)生什么?
- volatile 變量和 atomic 變量有什么不同?
- ReentrantLock與synchronized
- 啟動線程的方法是哪個?
- 同步類容器和并發(fā)類容器有何區(qū)別,使用場景分別是?
- CyclicBarrier 和 CountDownLatch 有什么不同?
- java內存模型
- 線程優(yōu)化的方案
可以參考cow模式,以及concurrenthashmap的優(yōu)化鎖力度等方面入手 - volatile與synchronized
- ThreadLocal線程局部變量
- 多線程的設計模式
Future-task,master-worker,Guarded Suspension,生產(chǎn)者消費者等 - 設計一個高并發(fā)的系統(tǒng),需要考慮哪些點?
- 什么是線程池,你在項目中使用過哪些?
線程池的幾種方式要記清楚,底層使用的都是同一個構造方法,要清楚的知道每個參數(shù)的含義,線程池大小的優(yōu)化,從io密集型和計算密集型方面去回答 - 線程池中任務滿了,會怎么處理?
- 什么是阻塞式方法,自己去設計一個該怎么實現(xiàn)?
- CountDownLatch
- 隊列(有界和無界)如何實現(xiàn)?
數(shù)據(jù)結構與算法
- 兩個有序的數(shù)組合并成一個數(shù)組,寫代碼實現(xiàn)?
給兩個數(shù)組分別定義一個下標,最大長度是數(shù)組長度減一,按位循環(huán)比較兩個數(shù)組,較小元素的
放入新數(shù)組,下標加一(注意,較大元素對應的下標不加一),直到某一個下標超過數(shù)組長度時
退出循環(huán),此時較短數(shù)組已經(jīng)全部放入新數(shù)組,較長數(shù)組還有部分剩余,最后將剩下的部分元素
放入新數(shù)組,大功告成。
- 反轉一個鏈表
- 斐波那契數(shù)列
兩種方式實現(xiàn),遞歸和非遞歸
- 樹相關的數(shù)據(jù)結構
此處會問二叉樹,排序樹,avl樹,紅黑樹,B樹,B+樹等相關的應用場景
- 各種排序算法需要簡單了解下
冒泡,快速排序,堆排序,二分法等等相關的都需要了解下