1. 程式人生 > 實用技巧 >面試:年薪30W+Java崗需要什麼水平?《2020年面試寶典總綱筆錄》

面試:年薪30W+Java崗需要什麼水平?《2020年面試寶典總綱筆錄》

前言

一份月薪30K的java開發崗位工作要求是怎樣的呢?面試都會問到哪些呢?

任職要求:
1、計算機或相關專業本科(或以上)學歷,具備3年以上Java服務端開發經驗,熟悉常用的Java開源框架,如熟悉Spring、SpringMVC、SpringBoot、Hibernate、MyBatis等,瞭解其原理和實現機制;
2、擅長Java Web服務開發,熟悉掌握各種Web應用開發模式,具有豐富的高併發、大資料系統的設計、研發、除錯經驗者優先;
3、精通Java及面向物件設計開發,熟悉常見設計模式,有系統設計經驗,研究過優秀開源軟體原始碼並有心得者優先;
4、熟悉常用資料庫(MySQL、Redis等)的原理和使用,具有良好的資料庫設計能力,對SQL編寫和優化有豐富的經驗;

5、熟悉Linux作業系統,掌握常用的Shell命令;

基於這些要求我們身為程式設計師必須要掌握:

1、資料結構與演算法。簡單的演算法與資料結構你還是該掌握的吧?這個要求過分嗎?作為程式設計師的你,如果連陣列,連結串列,這兩個基本的結構都搞不懂,還拿什麼指望你去理解,平衡二叉樹,紅黑樹,雜湊表,堆,桶,圖,這些更為複雜的資料結構?簡單的冒泡和選擇排序手寫下都面有難色的主,還指望他聽過快排、插入、希爾、堆排序、二路歸併、多路歸併、桶排、計數、基數這些本該掌握的很基礎的東西?有些時候遇到點知道時間複雜度和空間複雜度的人都阿彌陀佛了……

2、作業系統。基本的linux命令你還是要會幾個撒?記憶體分配、程序、執行緒排程這些簡單基礎的概念你還是應該有一點撒?別說這些東西沒用,很多時候在實現的時候,很多軟體參考了不少作業系統的設計思想。

3、資料庫層面。幾大正規化定義概念搞懂。資料庫事務的ACID總能扯明白吧?隔離層級分別保障的力度,和依然存在的問題你得知曉吧?有些都工作幾年的人了,不過分吧?SQL優化搞沒搞過?主流的MYSQL的儲存引擎之間的區別,幾種索引的區別和應用場景,應該如數家珍撒?作為一隻技術狗,資料庫事務的實現方式你應該知道一些吧?二階段提交、三階段提交你知道不?這些知道幾分,就看你個人深淺了。

以上算通用層面的東西,只要你說你是個程式設計師,你就應該知道。下面我們就來掰扯下和java有關的東西了。

30K的面試必將會問到:效能優化、微服務架構、併發程式設計、開源框架、分散式等。下面將會針對這些點展開分析。

全套資料總計頁數946頁,獲取:轉發+轉發+轉發後,點選獲取《

2020年面試寶典總綱

效能優化

  1. tomcat效能優化
  2. JVM效能優化
  3. Mysql效能優化

1、Tomcat效能優化

  • 你怎麼給Tomcat調優?
  • 如何加大Tomcat連結數?
  • 怎麼加大Tomcat的記憶體?
  • Tomcat中如何禁用列目錄下的檔案?
  • Tomcat有幾種部署方式?
  • Tomcat的優化經驗分享?

image

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中垃圾收集的方法有哪些?
  • 什麼是類載入器,類載入器有哪些?
  • 類載入器雙親委派模型機制?

image

微服務架構

  1. SpringCloud
  2. SpringBoot
  3. Dubbo

1、SpringCloud面試整理

  • 什麼是Spring Cloud?
  • 使用Spring Cloud有什麼優勢?
  • 服務註冊和發現是什麼意思?Spring Cloud如何實現?
  • 負載平衡的意義什麼?
  • 什麼是Hystrix?它如何實現容錯?
  • 什麼是Hystrix斷路器?我們需要它嗎?
  • 什麼是Netflix Feign?它的優點是什麼?
  • 什麼是Spring Cloud Bus?我們需要它嗎?

image

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微服務?

image

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需要注意些什麼?

image

開源框架面試

  1. Spring面試整理
  2. SpringMVC面試整理
  3. 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的自動裝配?
  • 請解釋自動裝配模式的區別?

image

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 裡面攔截器是怎麼寫的

image

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在核心處理類分別叫什麼?

image

分散式面試

  1. 分散式限流面試整理
  2. 分散式通訊面試整理
  3. 分散式資料庫面試整理

1.1、ZooKeeper面試專題

image

1.2、Nginx面試專題

image

2.1、RabbitMQ訊息中介軟體面試專題

image

2.2、kafka面試專題

image

3.1、Redis面試專題

image

3.2、MongoDB面試專題

image

3.3、memcached面試專題

image

搭配大廠面試解析教程

image

image

獲取方式

資料整理不易,本資料全套共946頁,大家拿到後可以回去吃透,來年正好可以派上用場,在面試中大展拳腳,拿下心儀Offer ,本資料已整理到Git

獲取:轉發+轉發+轉發後,點選獲取《2020年面試寶典總綱