面試:年薪30W+Java崗需要什麼水平?《2020年面試寶典總綱筆錄》
前言
一份月薪30K的java開發崗位工作要求是怎樣的呢?面試都會問到哪些呢?
任職要求:
1、計算機或相關專業本科(或以上)學歷,具備3年以上Java服務端開發經驗,熟悉常用的Java開源框架,如熟悉Spring、SpringMVC、SpringBoot、Hibernate、MyBatis等,瞭解其原理和實現機制;
2、擅長Java Web服務開發,熟悉掌握各種Web應用開發模式,具有豐富的高併發、大資料系統的設計、研發、除錯經驗者優先;
3、精通Java及面向物件設計開發,熟悉常見設計模式,有系統設計經驗,研究過優秀開源軟體原始碼並有心得者優先;
4、熟悉常用資料庫(MySQL、Redis等)的原理和使用,具有良好的資料庫設計能力,對SQL編寫和優化有豐富的經驗;
基於這些要求我們身為程式設計師必須要掌握:
1、資料結構與演算法。簡單的演算法與資料結構你還是該掌握的吧?這個要求過分嗎?作為程式設計師的你,如果連陣列,連結串列,這兩個基本的結構都搞不懂,還拿什麼指望你去理解,平衡二叉樹,紅黑樹,雜湊表,堆,桶,圖,這些更為複雜的資料結構?簡單的冒泡和選擇排序手寫下都面有難色的主,還指望他聽過快排、插入、希爾、堆排序、二路歸併、多路歸併、桶排、計數、基數這些本該掌握的很基礎的東西?有些時候遇到點知道時間複雜度和空間複雜度的人都阿彌陀佛了……
2、作業系統。基本的linux命令你還是要會幾個撒?記憶體分配、程序、執行緒排程這些簡單基礎的概念你還是應該有一點撒?別說這些東西沒用,很多時候在實現的時候,很多軟體參考了不少作業系統的設計思想。
3、資料庫層面。幾大正規化定義概念搞懂。資料庫事務的ACID總能扯明白吧?隔離層級分別保障的力度,和依然存在的問題你得知曉吧?有些都工作幾年的人了,不過分吧?SQL優化搞沒搞過?主流的MYSQL的儲存引擎之間的區別,幾種索引的區別和應用場景,應該如數家珍撒?作為一隻技術狗,資料庫事務的實現方式你應該知道一些吧?二階段提交、三階段提交你知道不?這些知道幾分,就看你個人深淺了。
以上算通用層面的東西,只要你說你是個程式設計師,你就應該知道。下面我們就來掰扯下和java有關的東西了。
30K的面試必將會問到:效能優化、微服務架構、併發程式設計、開源框架、分散式等。下面將會針對這些點展開分析。
全套資料總計頁數946頁,獲取:轉發+轉發+轉發後,點選獲取《
效能優化
- tomcat效能優化
- JVM效能優化
- Mysql效能優化
1、Tomcat效能優化
- 你怎麼給Tomcat調優?
- 如何加大Tomcat連結數?
- 怎麼加大Tomcat的記憶體?
- Tomcat中如何禁用列目錄下的檔案?
- Tomcat有幾種部署方式?
- Tomcat的優化經驗分享?
- …
2、JVM效能優化
- JVM類載入過程?
- JVM記憶體分配?
- 描述下JVM載入Class檔案的原理機制?
- GC是什麼?為什麼要有GC?
- 簡述Java垃圾回收機制?
- 如何判斷一個物件是否存活?(GC物件的判定方法)
- 垃圾回收的優點和原理。並考慮2種回收機制?
- 垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收?
- Java中會存在記憶體洩漏嗎,請簡單描述。
- 深拷貝和淺拷貝
- System.gc()和Runtime.gc)會做什麼事情?
- finalize(方法什麼時候被呼叫?解構函式(finalization)的目的是什麼?
- 如果物件的引用被置為null,垃圾收集器是否會立即釋放物件佔用的記憶體?
- 什麼是分散式垃圾回收(DGC)?它是如何工作的?
- 序列(serial)收集器和吞吐量(throughput)收集器的區別是什麼?
- 在Java中,物件什麼時候可以被垃圾回收?
- 簡述Java記憶體分配與回收策略以及 Minor GC和Major GC。
- JVM的永久代中會發生垃圾回收麼?
- Java中垃圾收集的方法有哪些?
- 什麼是類載入器,類載入器有哪些?
- 類載入器雙親委派模型機制?
- …
微服務架構
- SpringCloud
- SpringBoot
- Dubbo
1、SpringCloud面試整理
- 什麼是Spring Cloud?
- 使用Spring Cloud有什麼優勢?
- 服務註冊和發現是什麼意思?Spring Cloud如何實現?
- 負載平衡的意義什麼?
- 什麼是Hystrix?它如何實現容錯?
- 什麼是Hystrix斷路器?我們需要它嗎?
- 什麼是Netflix Feign?它的優點是什麼?
- 什麼是Spring Cloud Bus?我們需要它嗎?
- …
2、SpringBoot面試整理
- 什麼是Spring Boot?
- Spring Boot有哪些優點?
- 什麼是JavaConfig?
- 如何重新載入Spring Boot上的更改,而無需重新啟動伺服器?
- Spring Boot中的監視器是什麼?
- 如何在Spring Boot中禁用Actuator端點安全性?
- 如何在自定義埠上執行Spring Boot應用程式?
- 什麼是YAML?
- 如何實現Spring Boot應用程式的安全性?
- 如何整合Spring Boot和ActiveMQ?
- 如何使用Spring Boot實現分頁和排序?
- 什麼是Swagger?你用Spring Boot實現了它嗎?
- 什麼是Spring Profiles?
- 什麼是Spring Batch?
- 什麼是FreeMarker模板?
- 如何使用Spring Boot實現異常處理?
- 您使用了哪些starter maven依賴項?
- 什麼是CSRF攻擊?
- 什麼是WebSockets?
- 什麼是AOP?
- 什麼是Apache Kafka?
- 我們如何監視所有Spring Boot微服務?
- …
3、Dubbo面試整理
- Dubbo中zookeeper做註冊中心,如果註冊中心叢集都掛掉,釋出者和訂閱者之間還能通訊麼?
- dubbo服務負載均衡策略?
- Dubbo在安全機制方面是如何解決的
- dubbo連線註冊中心和直連的區別
- …
併發程式設計高階面試
- Synchronized用過嗎,其原理是什麼?
- 你剛才提到獲取物件的鎖,這個“鎖”到底是什麼?如何確定物件的鎖?
- 什麼是可重入性,為什麼說Synchronized是可重入鎖?
- JVM對Java的原生鎖做了哪些優化?
- 為什麼說Synchronized是非公平鎖?
- 什麼是鎖消除和鎖粗化?
- 為什麼說Synchronized是一個悲觀鎖?樂觀鎖的實現原理又是什麼?什麼是CAS,它有什麼特性?
- 樂觀鎖一定就是好的嗎?
- 跟Synchronized相比,可重入鎖ReentrantLock其實現原理有什麼不同?
- 那麼請談談AQS框架是怎麼回事兒?
- 請儘可能詳盡地對比下Synchronized和ReentrantL ock的異同。
- ReentrantLock 是如何實現可重入性的?
- 除了ReetrantL ock,你還接觸過JUC中的哪些併發工具?
- 請談談ReadWriteLock和StampedLock。
- 如何讓Java的執行緒彼此同步?你瞭解過哪些同步器?請分別介紹下。
- CyclicBarrier 和CountDownl _atch看起來很相似,請對比下呢?
- Java中的執行緒池是如何實現的?
- 建立執行緒池的幾個核心構造引數?
- 執行緒池中的執行緒是怎麼建立的?是一開始就隨著執行緒池的啟動建立好的嗎?
- 既然提到可以通過配置不同引數創建出不同的執行緒池,那麼Java中預設實現好的執行緒池又有哪些呢?請比較它們的異同。
- 如何在Java執行緒池中提交執行緒?
- 什麼是Java的記憶體模型,Java 中各個執行緒是怎麼彼此看到對方的變數的?
- 請談談volatile 有什麼特點,為什麼它能保證變數對所有執行緒的可見性?
- 既然volatile能夠保證執行緒間的變數可見性,是不是就意味著基於volatile變數的運算就是併發安全的?
- 請對比下volatile對比Synchronized的異同。
- 請談談ThreadLocal是怎麼解決併發安全的?
- 很多人都說要慎用ThreadLocal,談談你的理解,使用ThreadLocal需要注意些什麼?
- …
開源框架面試
- Spring面試整理
- SpringMVC面試整理
- MyBatis面試整理
1、Spring面試整理
- 什麼是Spring框架?Spring框架有哪些主要模組?
- 使用Spring框架能帶來哪些好處?
- 什麼是控制反轉(IOC)?什麼是依賴注入?
- 請解釋下Spring框架中的LOC?
- BeanFactory 和ApplicationContext有什麼區別?
- Spring 有幾種配置方式?
- 如何用基於XML配置的方式配置Spring?
- 如何用基於Java配置的方式配置Spring?
- 怎樣用註解的方式配置Spring?
- 請解釋Spring Bean的生命週期?
- Spring Bean的作用域之間有什麼區別?
- 什麼是Spring inner beans?
- Spring框架中的單例Beans是執行緒安全的麼?
- 請舉例說明如何在Spring中注入-個Java Collection?
- 如何向Spring Bean中注入-一個Java.util.Properties?
- 請解釋Spring Bean的自動裝配?
- 請解釋自動裝配模式的區別?
- …
2、SpringMVC面試整理
- 什麼是SpringMVC?
- Spring MVC的優點:
- SpringMVC工作原理?
- SpringMVC流程?
- SpringMvc的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
- 如果你也用過struts2.簡單介紹下springMVC和struts2的區別有哪些?
- SpingMvc中的控制器的註解一般用那個,有沒有 別的註解可以替代?
- @RequestMapping 註解用在類上面有什麼作用?
- 怎麼樣把某個請求對映到特定的方法上面?
- 如果在攔截請求中,我想攔截get方式提交的方法,怎麼配置?
- 怎麼樣在方法裡面得到Request,或者Session?
- 我想在攔截的方法裡面得到從前臺傳入的引數,怎麼得到?
- 如果前臺有很多個引數傳入,並且這些引數都是一個物件的,那麼怎麼樣快速得到這個物件?
- SpringMvc中函式的返回值是什麼?
- SpringMVC怎麼樣設定重定向和轉發的?
- SpringMvc 用什麼物件從後臺向前臺傳遞資料的?
- SpringMvc 中有個類把檢視和資料都合併的一起的,叫什麼?
- 怎麼樣把ModelMap裡面的資料放入Session裡面?
- SpringMvc怎麼和AJAX相互呼叫的?
- SpringMvc 裡面攔截器是怎麼寫的
- …
3、MyBatis面試整理
- 什麼是MyBatis?
- 講下MyBatis的快取
- Mybatis 是如何進行分頁的?分頁外掛的原理是什麼?
- 簡述Mybatis的外掛執行原理,以及如何編寫-一個外掛?
- Mybatis 動態SQL是做什麼的?都有哪些動態SQL?能簡述一下動態SQL的執行原理嗎?
- #{}和${}的區別是什麼?
- 為什麼說Mybatis是半自動ORM對映工具?它與全自動的區別在哪裡?
- Mybatis是否支援延遲載入?如果支援,它的實現原理是什麼?
- MyBatis 與Hibernate 有哪些不同?
- MyBatis的好處是什麼?
- 簡述Mybatis的Xml對映檔案和Mybatis內部資料結構之間的對映關係?
- 什麼是MyBatis的介面繫結,有什麼好處?
- 介面繫結有幾種實現方式,分別是怎麼實現的?
- 什麼情況下用註解繫結,什麼情況下用xml繫結?
- MyBatis 實現-對一-有幾種方式?具體怎麼操作的?
- Mybatis 能執行一對一、一對多的關聯查詢嗎?都有哪些實現方式,以及它們之間的區別?
- MyBatis 裡面的動態Sql是怎麼設定的?用什麼語法?
- Mybatis 是如何將sql執行結果封裝為目標物件並返回的?都有哪些對映形式?
- Xml對映檔案中,除了常見的selectlinsertlupdae|delete 標籤之外,還有哪些標籤?
- 當實體類中的屬性名和表中的欄位名不-樣,如果將查詢的結果封裝到指定pojo?
- Mybatis 對映檔案中,如果A標籤通過include引用了B標籤的內
- 對映檔案中,如果對映檔案中,如果A標籤通過包括引用了B標籤的內容,請問,B標籤能否定義在A標籤的後面,還是說必須定義在A標籤的前面?
- IBatis 和MyBatis在核心處理類分別叫什麼?
- …
分散式面試
- 分散式限流面試整理
- 分散式通訊面試整理
- 分散式資料庫面試整理
1.1、ZooKeeper面試專題
1.2、Nginx面試專題
2.1、RabbitMQ訊息中介軟體面試專題
2.2、kafka面試專題
3.1、Redis面試專題
3.2、MongoDB面試專題
3.3、memcached面試專題
搭配大廠面試解析教程
獲取方式
資料整理不易,本資料全套共946頁,大家拿到後可以回去吃透,來年正好可以派上用場,在面試中大展拳腳,拿下心儀Offer ,本資料已整理到Git
獲取:轉發+轉發+轉發後,點選獲取《2020年面試寶典總綱》