1、重載重寫的區別?
2、轉發和重定向的區別?
3、畫下 HashMap 的結構圖?HashMap 、 HashTable 和 ConcurrentHashMap 的區別?
4、statement 和 preparedstatement 區別?
5、JSP 中一個中取值與直接取值的區別?會有什么安全問題?
6、實現一個線程安全的單例模式
8、自己實現一個 List,(主要實現 add等常用方法)
9、Spring 中 IOC 和 AOP 的理解?
10、兩個對象的 hashcode 相同,是否對象相同?equal() 相同呢?
11、@RequestBody 和 @ResponseBody 區別?
12、JVM 一個錯誤,什么情況下會發生?
3、講下這個 XSS 攻擊
4、HashMap 的結構?HashMap 、 HashTable 和 ConcurrentHashMap 的區別?
5、HashMap 中怎么解決沖突的?(要我詳細講下)
6、ConcurrentHashMap 和 HashTable 中線程安全的區別?為啥建議用 ConcurrentHashMap ?能把 ConcurrentHashMap 里面的實現詳細的講下嗎?
7、Session 和 Cookie 的區別?
8、你項目中登錄是怎樣做的,用的 Cookie 和 Session?
9、講講你對 Spring 中的 IOC 和 AOP 的理解?
10、問了好幾個注解的作用?
11、statement 和 preparedstatement 區別?
12、$ 和 # 的區別?以及這兩個在哪些地方用?
14、講講 Python 中的多線程和 Java 中的多線程區別?
15、自己剛好前幾天在看線程池,立馬就把面試官帶到我熟悉的線程池,和面試官講了下 JDK 自帶的四種線程池、ThreadPoolExecutor 類中的最重要的構造器里面的七個參數,然后再講了下線程任務進入線程池和核心線程數、緩沖隊列、最大線程數量比較。
16、線程同步,你了解哪幾種方式?
17、講下 Synchronized?
18、講下 RecentLock 可重入鎖? 什么是可重入鎖?為什么要設計可重入鎖?
19、講下 Volatile 吧?他是怎樣做到同步的?
20、Volatile 為什么不支持原子性?舉個例子
21、Atomic 怎么設計的?(沒看過源碼,當時回答錯了,后來才發現里面全部用 final 修飾的屬性和方法)
25、JVM 里的幾個問題?
26、事務的特性?
27、隔離級別?
28、網絡狀態碼?以 2、3、4、5 開頭的代表什么意思。
29、并發和并行的區別?
3、說一說數據庫建表吧(從范式講)
4、講講多態?
5、將兩個數轉換(不借助第三個參數)
6、手寫個插入排序吧(寫完了和面試官講了下執行流程)
7、講講你對 Spring 中的 IOC 和 AOP 的理解?
2、什么是多態?哪里體現了多態的概念?
3、HashMap 源碼分析,把里面的東西問了個遍?最后問是不是線程安全?引出 ConcurrentHashMap
4、ConcurrentHashMap 源碼分析
5、類加載,雙親委托機制
6、Java內存模型(一開始說的不是他想要的,主要想問我堆和棧的細節)
7、垃圾回收算法
8、線程池,自己之前看過,所以說的比較多,最后面試官說了句:看你對線程池了解還是很深了
9、事務的四種特性
10、什么是死鎖?
11、樂觀鎖和悲觀鎖的策略
12、高可用網站的設計(有什么技術實現)
13、低耦合高內聚
14、設計模式了解不?你用過哪幾種,為什么用,單例模式幫我們做什么東西?有什么好處?
15、你參與什么項目中成長比較快?學到了什么東西,以前是沒有學過的?
16、項目中遇到的最大困難是怎樣的?是怎么解決的?
17、智力題(兩根不均勻的香,點一頭燒完要一個小時,怎么確定15分鐘)
3、線程同步的方法?Synchronized、Volatile、(面試官好像覺得 Volatile 不可以做到同步,我和他說了半天的 Volatile 原理 ,他竟然不認同,我開始懷疑他的實力了)、ThreadLocal、Atomic。
說到這些了,我當時竟然沒把他帶進我我給他挖的坑里去(線程池,之前好好研究過呢,可惜了)
4、Spring IOC 和 AOP 的理解?叫我寫 AOP 的代碼,我沒寫
5、JDK 動態代理和 Cglib 代理區別?
5、你覺得項目里面你覺得哪些技術比較好?我指了兩個,然后他也沒有問下去。
6、解釋下 XSS 攻擊
7、Spring 和 SpringBoot 的區別?
8、JVM 垃圾回收算法?分代中為什么要分三層?
9、OOM 是什么?什么情況會發生?
堆內存設置的參數是什么?
如何?定義?個類加載器?你使?過哪些或者你在什么場景下需要?個?
定義的類加載器嗎?
一個hashmap,1000的線程并發讀,200個并發寫,你這么設計保證線程安全
volatile你準備怎么實現
簡單介紹一下HashMap (其中包括底層數據結構、為什么默認長度的為16、線程安全問題等)
介紹一下紅黑樹 (因為HashMap在JDK1.8中數據結構加入了紅黑樹)
簡單說一下ConcurrentHashMap (主要是與HashMap的區別、怎么實現線程安全的)
說一下數據庫的事務以及數據庫的隔離級別
是否了解數據庫索引 (這里主要問的是BTree以及B+Tree的區別、B+Tree的特性)
介紹一下悲觀鎖、樂觀鎖 (區別、什么時候用等)
如果現在只有一張火車票,怎么讓所有人都看見但是只有一個人能購買成功 (這里就是悲觀鎖樂觀鎖的應用處理并發問題)
簡單介紹一下AOP、實現動態代理的方式
寫一下快速排序/堆排序/歸并排序的偽代碼并說明時間復雜度 (偽代碼也可以不用寫,但是一定要說明白流程;時間復雜度也要會)
說明一下哪種排序是穩定的
簡單說一下垃圾回收機制
說一下Dom4J以及SAX的區別,什么時候用,怎么用
說一下Maven,為什么要用Maven
說一下線程池的源碼,里面的變量都是什么意思
介紹JVM內存分區,以及各個區中的垃圾回收機制
是否了解雙親委派機制模型(問的就是類加載器)
介紹一下NIO,怎么使用NIO
一系列的并發問題
你有兩臺服務器是相互協作工作的(一臺維護,另一臺運行),你怎么處理請求以及靜態數據問題?
兩臺服務器同時購買同一件東西,不在數據庫端、服務器端加鎖,怎么處理并發
如果讓你設計一塊緩存,你會怎么設計?(這個問題我感覺很難,他會問你數據結構以及時間復雜度。而且緩存存入的東西不能有邏輯運算,沒有邏輯運算就意味著你在調用的時候怎么對準確的調用到存入的信息。并且在內存滿了的時候你會怎么設計清除掉垃圾數據。)
List 和 Set 的區別
2、HashSet 是如何保證不重復的
3、HashMap 是線程安全的嗎,為什么不是線程安全的(最好畫圖說明多線程環境下不安全)?
4、HashMap 的擴容過程
5、HashMap 1.7 與 1.8 的 區別,說明 1.8 做了哪些優化,如何優化的?
6、final finally finalize
7、強引用 、軟引用、 弱引用、虛引用
8、Java反射
9、Arrays.sort 實現原理和 Collection 實現原理
10、LinkedHashMap的應用
11、cloneable接口實現原理
12、異常分類以及處理機制
13、wait和sleep的區別
14、數組在內存中如何分配
synchronized 的實現原理以及鎖優化?
2、volatile 的實現原理?
3、Java 的信號燈?
4、synchronized 在靜態方法和普通方法的區別?
5、怎么實現所有線程在等待某個事件的發生才會去執行?
6、CAS?CAS 有什么缺陷,如何解決?
7、synchronized 和 lock 有什么區別?
8、Hashtable 是怎么加鎖的 ?
9、HashMap 的并發問題?
10、ConcurrenHashMap 介紹?1.8 中為什么要用紅黑樹?
11、AQS
12、如何檢測死鎖?怎么預防死鎖?
13、Java 內存模型?
14、如何保證多線程下 i++ 結果正確?
15、線程池的種類,區別和使用場景?
16、分析線程池的實現原理和線程的調度過程?
17、線程池如何調優,最大數目如何確認?
18、ThreadLocal原理,用的時候需要注意什么?
19、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差別?
20、LockSupport工具
21、Condition接口及其實現原理
22、Fork/Join框架的理解
23、分段鎖的原理,鎖力度減小的思考
24、八種阻塞隊列以及各個阻塞隊列的特性
BeanFactory 和 FactoryBean?
2、Spring IOC 的理解,其初始化過程?
3、BeanFactory 和 ApplicationContext?
4、Spring Bean 的生命周期,如何被管理的?
5、Spring Bean 的加載過程是怎樣的?
6、如果要你實現Spring AOP,請問怎么實現?
7、如果要你實現Spring IOC,你會注意哪些問題?
8、Spring 是如何管理事務的,事務管理機制?
9、Spring 的不同事務傳播行為有哪些,干什么用的?
10、Spring 中用到了那些設計模式?
11、Spring MVC 的工作原理?
12、Spring 循環注入的原理?
13、Spring AOP的理解,各個術語,他們是怎么相互工作的?
14、Spring 如何保證 Controller 并發的安全?
Netty
1、BIO、NIO和AIO
2、Netty 的各大組件
3、Netty的線程模型
4、TCP 粘包/拆包的原因及解決方法
5、了解哪幾種序列化協議?包括使用場景和如何去選擇
6、Netty的零拷貝實現
7、Netty的高性能表現在哪些方面
分布式相關
1、Dubbo的底層實現原理和機制
2、描述一個服務從發布到被消費的詳細過程
3、分布式系統怎么做服務治理
4、接口的冪等性的概念
5、消息中間件如何解決消息丟失問題
6、Dubbo的服務請求失敗怎么處理
7、重連機制會不會造成錯誤
8、對分布式事務的理解
9、如何實現負載均衡,有哪些算法可以實現?
10、Zookeeper的用途,選舉的原理是什么?
11、數據的垂直拆分水平拆分。
12、zookeeper原理和適用場景
13、zookeeper watch機制
14、redis/zk節點宕機如何處理
15、分布式集群下如何做到唯一序列號
16、如何做一個分布式鎖
17、用過哪些MQ,怎么用的,和其他mq比較有什么優缺點,MQ的連接是線程安全的嗎
18、MQ系統的數據如何保證不丟失
19、列舉出你能想到的數據庫分庫分表策略;分庫分表后,如何解決全表查詢的問題
20、zookeeper的選舉策略
21、全局ID
數據庫
1、mysql分頁有什么優化
2、悲觀鎖、樂觀鎖
3、組合索引,最左原則
4、mysql 的表鎖、行鎖
5、mysql 性能優化
6、mysql的索引分類:B+,hash;什么情況用什么索引
7、事務的特性和隔離級別
樂觀鎖重試次數等問題
緩存
1、Redis用過哪些數據數據,以及Redis底層怎么實現
2、Redis緩存穿透,緩存雪崩
3、如何使用Redis來實現分布式鎖
4、Redis的并發競爭問題如何解決
5、Redis持久化的幾種方式,優缺點是什么,怎么實現的
6、Redis的緩存失效策略
7、Redis集群,高可用,原理
8、Redis緩存分片
9、Redis的數據淘汰策略
JVM
1、詳細jvm內存模型
2、講講什么情況下回出現內存溢出,內存泄漏?
3、說說Java線程棧
4、JVM 年輕代到年老代的晉升過程的判斷條件是什么呢?
5、JVM 出現 fullGC 很頻繁,怎么去線上排查問題?
6、類加載為什么要使用雙親委派模式,有沒有什么場景是打破了這個模式?
7、類的實例化順序
8、JVM垃圾回收機制,何時觸發MinorGC等操作
9、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的
10、各種回收器,各自優缺點,重點CMS、G1
11、各種回收算法
12、OOM錯誤,stackoverflow錯誤,permgen space錯誤
- 基礎
- 編譯和安裝
- scanner類(鍵盤錄入)
- Random類(隨機數)
- 數組
- 方法
- 類
- ArrayList集合
- char與int
- eclipse
- IDEA
- 變量與常量
- 常用API
- String,StringBuffer,StringBuilder
- 正則,Date,DateFormat,Calendar
- 包裝類,System,Math,Arrays,BigInteger,BigDecimal
- 集合,迭代器,增強for,泛型
- List,set,判斷集合唯一
- map,Entry,HashMap,Collections
- 異常
- IO
- File
- 遞歸
- 字節流
- 字符流
- IO流分類
- 轉換流
- 緩沖流
- 流的操作規律
- properties
- 序列化流與反序列化流
- 打印流
- commons-IO
- IO流總結
- 多線程
- 線程池
- 線程安全
- 線程同步
- 死鎖
- lock接口
- ThreadLoad
- 等待喚醒機制
- 線程狀態
- jdbc
- DBUtils
- 連接池DBCP
- c3p0連接池
- 網絡編程
- 多線程socket上傳圖片
- 反射
- xml
- 設計模式
- 裝飾器模式
- web service
- tomcat
- Servlet
- response
- request
- session和cookie
- JSP
- EL
- JSTL
- 事務
- 監聽器Listener
- 過濾器Filter
- json
- linux安裝軟件
- 反射詳解
- 類加載器和注解
- 動態代理
- jedis
- Hibernate
- 簡介
- 創建映射文件
- Hibernate核心配置文件
- 事務和增刪改查
- HibernateUtils
- 持久化對象的三種狀態
- 檢索方式
- query
- Criteria
- SQLQuery
- 持久化類
- 主鍵生成策略
- 緩存
- 事務管理
- 關系映射
- 注解
- 優化
- struts2
- 搭建
- 配置詳解
- Action
- 結果跳轉方式
- 訪問ServletAPI方式
- 如何獲得參數
- OGNL表達式
- valueStack 值棧
- Interceptor攔截器
- spring
- 導包
- IOC和DI
- Bean獲取與實例化
- Bean屬性注入
- spring注解
- 注解分層
- junit整合
- aop
- 動態代理實現
- cglib代理實現
- aop名詞
- spring的aop
- aop-xml詳解
- aop-注解詳解
- 代理方式選擇
- jdbcTemplate
- spring事務管理
- 回滾注意
- 事務傳播屬性
- MyBatis
- MyBatis簡介
- 入門程序
- 與jdbc hibernate不同
- 原始Dao開發
- Mapper動態代理方式
- SqlMapConfig.xml配置文件
- 輸入參數pojo包裝類
- resultMap
- 動態sql
- 一對一關聯
- 一對多
- 整合spring
- 逆向工程
- maven
- maven簡介
- 倉庫
- maven目錄結構
- maven常用命令
- 生命周期
- eclipse中maven插件
- 入門程序
- 整合struct
- 依賴范圍
- 添加插件
- idea配置
- jar包沖突
- 分模塊開發
- 構建可執行的jar包(包含依賴jar包)
- springMVC
- 處理流程
- java面試
- java版本升級
- java1-8版本變更
- java9新特性
- 鎖
- java資料
- idea
- jdk版本切換
- log4j
- 入門實例
- 基本使用方法
- Web中使用Log4j
- spring中使用log4j
- java代碼優化