都2021年了,還不知道面試問什麼?(JAVA篇)

很多童鞋們現在還是不清楚面試的時候我們應該怎麼做
面試官一般情況下都是先讓應聘者來一段自我介紹,由此通過你透露的基本信息,自身項目經驗與能力的沉澱,給面試官留出繼續討論下去的話題。

自我介紹主要說什麼呢?

  1. 1 分鐘左右的自我介紹,簡要的描述出;姓名、畢業時間、工作年限、 工作經歷、技術影響力[博客、Github、開源貢獻、專利]等。
  2. 如果有較大型項目或者大家有一致性認知的項目和技術難點攻克,可以 簡單說出項目名稱等。
  3. 方法論沉澱相關;架構設計能力、帶過小組或者團隊、跨部門協調、流 程規範制定和執行等。

1. 算法

算法一整塊內容來考的互聯網公司目前有一些,比如;頭條、谷歌、百度,但不
一定所有職位都需要去考算法。熱頻考點大部分可以分如下幾塊:
1. 動態規劃
2. 數據結構
3. 算法思維
在題目上一般會有排序、二分查找、迴文鏈表、反鏈鏈表,和數據結構設計方面。
這些題目可以通過  刷題進行練習。

2.技術棧

	技術棧考查的是程序員在編程開發領域學習的廣度和深度,日常的業務開發往往
提升都是對 API 使用的熟練程度,如果再缺少一些系統設計和技術難點攻克,或
者說沒有大流量的衝擊。那麼確實很難回答一些技術深度問題。如下彙總了基本
會再技術棧面試中涉及的考題,可以參考提升個人技術能力。

2.1 技能

	1.1 Java 
JDK 源碼
		1. HashMap
		2. HashMap 的數據結構(1.7、1.8 的區別)
		3. HashMap 的實現原理
		4. HashMap 擴容爲什麼是 2^n-1
		5. HashMap 是線程安全的嗎
		6. HashMap、HashTable 是什麼關係?
		2. ThreadLocal
			1. 講講你對 ThreadLocal 的一些理解
			2. ThreadLocal 有哪些應用場景
			3. 瞭解過 FastThreadLocal 嗎
		3. ArrayList、LinkList
			1. 是否保證線程安全
			2. 底層數據結構
			3. 插入和刪除是否受元素位置的影響
			4. 是否支持快速隨機訪問
			5. 內存空間佔用
			6. 如何進行擴容的,默認初始化空間是多少
		4. String StringBuffer StringBuilder
			1. 有什麼區別
			2. 是線程安全的嗎
		5. jdk1.8 的新特性
			1. lambda 表達式
			2. Functional Interfaces
			3. Optionals
			4. Stream 流
			5. Parallel-Streams 並行流
併發編程(j.u.c)
	1. volatile
		1. volatile 的作用和使用場景
		2. volatile 如何保證指令重排
		3. 什麼情況下會發生指令重排
	2. synchronized
		1. 一般用在什麼場景
		2. 實現原理
		3. 鎖升級過程(偏向鎖、輕量級鎖、重量級鎖)
		4. 這是 JVM 層面鎖,還是 JDK 層面鎖{JVM 層面}
		5. 這是一種悲觀鎖還是樂觀鎖{悲觀鎖是獨佔鎖}
	3. lock
		1. 這是 JVM 層面鎖,還是 JDK 層面鎖{JDK 層面}
		2. 這是一種悲觀鎖還是樂觀鎖
		3. 是可重入鎖嗎
	4. ReentrantLock
		1. 與 synchronized 相比較有什麼不同
		2. ReentrantLock 與 Lock 的關係
		3. 鎖過程中是否可中斷,與之對應的 synchronized 可中斷嗎
	5. CAS
		1. Unsafe 類的作用
		2. CAS 的理解(compareAndSet)
		3. 什麼是 ABA 問題
		4. CAS 的實現有什麼(AtomicInteger)
	6. AQS
		1. 實現類有哪些 ReentrantLock、Semaphore、CountDownLatch、
		CyclicBarrier
		2. 實現了 AQS 的鎖有哪些 自旋鎖、互斥鎖、讀鎖寫鎖、條件產量、
		信號量、柵欄都是 AQS 的衍生物 內存屏障,幾乎所有的處理器至
		少支持一種粗粒度的屏障指令,通常被稱爲“柵欄(Fence)”
多線程
	1. 線程池的種類
		1. newCachedThreadPool
		2. newFixedThreadPool
		3. newScheduledThreadPool
		4. newSingleThreadExecutor
	2. 線程的生命週期
		1. 新建、就緒、運行、阻塞(等待阻塞、同步阻塞、其他阻塞)、死
		亡
JVM
	1. GC 優化
	2. JVM 逃逸分析
	3. 類的對象頭都包括什麼
	4. new Object() 初始化都做了什麼
	5. 運行時數據區
	6. Java 的內存模型以及 GC 算法
設計模式
	1. 設計模式 6 大原則 單一職責(一個類和方法只做一件事)、里氏替換(多
	態,子類可擴展父類)、依賴倒置(細節依賴抽象,下層依賴上層)、接口
	隔離(建立單一接口)、迪米特原則(最少知道,降低耦合)、開閉原則(抽
	象架構,擴展實現)
	2. 創建型模式 這類模式提供創建對象的機制, 能夠提升已有代碼的靈活
	性和可複用性。
	3. 結構型模式 這類模式介紹如何將對象和類組裝成較大的結構, 並同時
	保持結構的靈活和高效。
	4. 行爲模式 這類模式負責對象間的高效溝通和職責委派。
反射、代理
	1. 怎麼實現反射調用方法
	2. 怎麼代理一個類,有什麼場景使用
	3. 類代理的原理是什麼
	4. 有什麼框架可以做類代理



Redis篇
	命令
		1. 計數命令
		2. 排序命令
		3. 加鎖命令
	架構
		1. 常用的數據類型
		2. 數據淘汰策略
		3. 單線程的爲什麼那麼快
		4. RDB 和 AOF 的優缺點
		5. 持久化策略選擇
	應用
		1. 緩存雪崩、緩存穿透、緩存預熱、緩存更新、緩存降級
		2. Pipeline 有什麼好處,爲什麼要用 pipeline
		3. 是否使用過 Redis 集羣,集羣的原理是什麼
		4. Redis 的同步機制瞭解麼


Mysql篇


	鎖
		1. 全局鎖
		2. 表鎖
		3. 行鎖
		4. 樂觀鎖、悲觀鎖
		5. 排他鎖
		6. 鎖優化
	事務
		1. 事物特徵
		2. 髒讀
		3. 幻讀
		4. 不可重複讀
		5. 事物隔離
		6. 併發事物
		7. 事物實現原理
	日誌
		1. 慢查詢日誌
		2. 錯誤日誌
		3. redo log(重做日誌)
		4. binlog(歸檔日誌)
		5. undo log(回滾日誌)
	索引
		1. 聚集索引 VS 非聚集索引
		2. 最左匹配原則
		3. 前綴索引
	引擎
		1. InnoDB
		2. MyISAM
		3
框架 
	1 Spring 
		1. Bean 的註冊過程
		2. Bean 的定義都包括什麼信息
		3. 3. Spring 事務中的隔離級別有哪幾種
		4. schedule 使用
	2 Mybatis 
		1. mybatis 在 spring 的使用中,只需要定義接口,就可以和 xml 中的配置
		的 sql 語句,進行關聯,執行數據庫增刪改查操作。怎麼實現的
		2. session 是怎麼管理的
	3 SpringBoot 
		1. SpringBoot 怎麼開發一個自己的 Stater
	4 SpringCloud 
		1. spring cloud 斷路器的作用是什麼
		2. spring cloud 的核心組件有哪些 Eureka:服務註冊於發現。 Feign:
		基於動態代理機制,根據註解和選擇的機器,拼接請求 url 地址,發起
		請求。 Ribbon:實現負載均衡,從一個服務的多臺機器中選擇一臺。
		Hystrix:提供線程池,不同的服務走不同的線程池,實現了不同服務調
		用的隔離,避免了服務雪崩的問題。 Zuul:網關管理,由 Zuul 網關轉
		發請求給對應的服務。
3 組件 
		1 Dubbo 
			1. 通信模型是什麼樣的
			2. Dubbo 和 Spring Cloud 有什麼區別
			3. dubbo 都支持什麼協議,推薦用哪種 dubbo://(推薦) rmi:// 
			hessian:// http:// webservice:// thrift:// memcached:// 
			redis:// rest://
			4. Dubbo 裏面有哪幾種節點角色
			5. Dubbo 中怎麼處理的超時斷開
		2 Mq 
			1. RabbitMq
			2. Kafka
		3 elasticsearch
			1. elasticsearch 瞭解多少,說說你們公司 es 的集羣架構,索引數據大
			小,分片有多少,以及一些調優手段 。
			2. elasticsearch 的倒排索引是什麼
			3. elasticsearch 是如何實現 master 選舉的
			4. 詳細描述一下 Elasticsearch 搜索的過程
		4 Hbase 
			1. 拓展類問題
		5 otter 
			1. 拓展類問題
 工具 
		1. Idea
		2. Maven
		3. Jenkins
		4. JMeter
架構 
	1 系統搭建 
			1. MVC
			2. DDD 領域驅動設計
	2 數據庫設計 
		1. 分庫分表(水平拆分、垂直拆分)
		2. 業務場景
		3. 基礎配置優化相關
	3 服務治理 
		1. 負載均衡
		2. 熔斷
		3. 降級
		4. 限流
		5. 黑白名單
	4 分佈式任務 
		1. xxl-job
	5 監控 
		1. 系統非入侵全鏈路監控
		2. TP99、TP999、QPS、TPS 的熟悉程度
	6 壓測 
		1. 是否壓測過,有無經驗
		2. 對系統健壯性的把控
		3. JVM 參數
		4. GC 調優
		5. 代碼優化
環境 
	1. Linux
	2. Tomcat
	3. docker
	4. k8s
項目 
	1 項目經驗 
		1. 開發了哪些項目
		2. 重點項目是什麼
		3. 你主要負責哪些
		4. 有過什麼優化
	2 工作業績 
		1. 中大型項目架構能力
		2. 複雜項目落地能力
		3. 重點項目執行落地
		4. 交付能力&質量
	3 技術沉澱 
		1. 方法論
		2. 流程規範制定
		3. 交付質量
		4. 公用組件建設
		5. 開源項目
		6. 複雜架構設計經驗
		7. 團隊技術分享
	4 工程師品質 
		1. 認知範圍,技術、業務、運營
		2. 學習能力,接受能力
		3. 創新技術,遷移能力
	5 疑難問題處理 
		1. 複雜問題推進解決能力
		2. 緊急事故解決能力
	6 項目推進 
		1. 中大型項目推進落地
		2. 資源協調安排
		3. 流程規範實施
	7 專業影響力 
		1. 項目推進過程中方案執行落地
		2. 帶動他人共同完成,並賦予能力提升
		3. 技術價值創造
		4. 開源項目和專利

個人&面試官 
	1 個人 
		1. 可能會有一個人性的問題
		2. 介紹自己部門是什麼的
		3. 其他你早點入職
	2 面試官 
		1. 部門主要做什麼業務
		2. 入職後承擔哪塊
		3. 有什麼技術挑戰需要提前學習瞭解的

根據這些彙總信息來進行面試複習,認真的熟悉過後,不僅有利於面試,對我們的技術學習也是有很大的幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章