前言
最近這一段時間,網絡上頻繁爆出各大知名的互聯網企業,進行裁人的事件,不少人都心生擔心,互聯網是否真的進入了寒冬?無論是裁人仍是降薪,都是企業提升盈利的手段,這很是真實。若是怕被裁人,就永遠別找工做了,哪裏都存在裁人的風險。對於在職幾年的人,須要迅速梳理本身的亮點,看看本身能在哪一個方向作得更好,看看怎樣把本身的價值展現出來,讓領導意識到你的重要性,對於技術人來講,更要努力提升本身的專業技能,適應環境,下面是我總結的一些互聯網公司java程序員面試所要儲備的技術知識及面試專題和答案,但願能幫助到想要跳槽換工做的朋友找到一個本身滿意的工做。java
須要準備的技術知識
如下爲這些面試中常問的面試問題,不過這些問題只是冰山一角,就算都會了也不能怎麼樣,最最重要的,仍是堅實的基礎,清醒的頭腦。程序員
Java基礎必備面試
HashMap,HashTable,ConcurrentHashMap的區別。
ArrayList 和 Vector 的區別。
說說 ArrayList,Vector, LinkedList 的存儲性能和特性。
快速失敗 (fail-fast) 和安全失敗 (fail-safe) 的區別是什麼?
hashmap 的數據結構。
HashMap 的工做原理是什麼?
Hashmap 何時進行擴容呢?
DK8中對HashMap作了怎樣的優化。
List、Map、Set 三個接口,存取元素時,各有什麼特色?br/>動態代理的兩種方式,以及區別。
@transactional註解在什麼狀況下會失效,爲何。
算法與數據結構算法
B+樹
快速排序,堆排序,插入排序(八大排序算法都應該瞭解)
一致性Hash算法,一致性Hash算法的應用
JVM性能優化sql
Java 內存分配?
GC 是什麼? 爲何要有 GC?
簡述 Java 垃圾回收機制。垃圾回收器的基本原理是什麼?
什麼是分佈式垃圾回收(DGC)?
Java類加載的過程?雙親委派機制?數據庫
多線程與併發設計模式
什麼是多線程併發和並行?什麼是線程安全問題?
什麼是可重入鎖、樂觀鎖、悲觀鎖、公平鎖、非公平鎖、獨佔鎖、共享鎖?
講講ThreadLocal 的實現原理?ThreadLocal 做爲變量的線程隔離方式,其內部是如何作的?
獨佔鎖 ReentrantLock 原理?讀寫鎖 ReentrantReadWriteLock 原理?
基於鏈表的非阻塞×××隊列 ConcurrentLinkedQueue 原理?緩存
數據庫相關安全
請簡潔描述 MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
MySQL 中使用什麼存儲引擎?MySQL 中有哪幾種鎖?
什麼是 MongoDB?MongoDB 特色?MongoDB 的功能?MongoDB 的適用場景?性能優化
數據庫相關
請簡潔描述 MySQL 中 InnoDB 支持的四種事務隔離級別名稱,以及逐級之間的區別?
MySQL 中使用什麼存儲引擎?MySQL 中有哪幾種鎖?
什麼是 MongoDB?MongoDB 特色?MongoDB 的功能?MongoDB 的適用場景?
網絡協議
談談TCP與UDP區別?
三次握手,四次揮手?爲何要四次揮手?
什麼是粘包與半包問題?粘包與半包爲什麼會出現?如何避免粘包與半包問題?
設計模式
J2EE 經常使用的設計模式?說明工廠模式?
開發中都用到了那些設計模式?用在什麼場合?
分佈式與中間件
zookeeper的負載均衡算法有哪些?
業務中使用分佈式的場景?Session 分佈式方案?
分佈式鎖的場景?分佈是鎖的實現方案?
分佈式事務?集羣與負載均衡的算法與實現?
分庫與分表設計?分庫與分錶帶來的分佈式困境與應對之策?
緩存相關
Redis和memcached的區別?Redis支持哪些數據結構?
Redis是單線程的麼,全部的工做都是單線程麼?
Redis如何存儲一個String的?Redis的部署方式,主從,集羣?
Redis的哨兵模式,一個key值如何在Redis集羣中找到存儲在哪裏?Redis持久化策略?
源碼框架相關
什麼是 Spring 框架?Spring 框架有哪些主要模塊?什麼是控制反轉 (IOC)?什麼是依賴注入?
BeanFactory 和 ApplicationContext 有什麼區別?
簡單的談一下 Spring MVC 的工做流程。
@ModelAttribute 如何使用?說說你對自定義數據類型轉換器的理解。
什麼是 MyBatis 的接口綁定,有什麼好處?
總結
不管是哪家公司,都很重視高併發高可用的技術,重視基礎,重視JVM。面試是一個雙向選擇的過程,不要抱着畏懼的心態去面試,不利於本身的發揮。同時看中的應該不止薪資,還要看你是否是真的喜歡這家公司,是否是能真的獲得鍛鍊。其實寫了這麼多,並不必定適用於全部人,相信通過一些面試,你們都會有這些感觸。若是這些可以幫到你,那就最好了!
最後上述說到的技術知識點我總結出了互聯網公司Java程序員面試中所遇到的大多數面試問題整理了答案和一些架構視頻資料分享給有須要的朋友(包括Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis等架構技術資料),加扣扣羣便可領取:920212276,但願能節省你在網上找資料的時間及幫助你找到一份滿意的工做!