1. 程式人生 > >2017年秋招Java面試高頻面試題(個人整理)

2017年秋招Java面試高頻面試題(個人整理)

Java基礎:
多型(原理、實現)
過載和覆蓋
抽象類、介面區別
==、equals()、hashcode()-對於基本型別、引用型別分情況
String原理(原始碼中final實現了其不可變,底層資料結構-char陣列)、StringBuilder-執行緒不安全、StringBuffer執行緒安全(原始碼中藉助synchronized來實現的)
socket通訊(手寫程式碼)
IO操作(讀取檔案等)手寫
java集合框架(迭代器、底層結構、特點以及一些區別hashmap、hashtable;arraylist、vector)
多執行緒(執行緒實現方式、執行緒同步方式、執行緒池)
Error和Exception
資料庫:

sql語句,刪除表truncate等、查詢group by/order by/函式的使用
索引的分類及特點、底層實現
mysql常用儲存引擎及特點
資料庫事務的特點ACID以及事務的隔離級別及各個級別能解決的問題(髒讀、不可重複讀、幻讀)
mysql和oracle的區別
JVM:
java記憶體模型及各自的作用
gc過程及其中涉及到的演算法和物件分代(新生代、老年代、持久代)
JVM裝載.class檔案的過程(裝載、連結(檢查、準備、解析)、初始化)
記憶體洩漏的原因及一些具體的情形
堆和棧的區別
Java web:
看簡歷情況做相應準備:
tomcat處理請求的過程
struts處理請求的過程、接收前臺引數、返回資料給前臺
springmvc執行流程、元件的配置、接收前臺引數、返回資料給前臺
struts和springmvc的區別
hibernate和mybatis的區別
spring中aop(動態代理,cglib和jdk動態代理)和ioc底層原理
spring中事務的配置和傳播方式
spring整合struts/springmvc和mybatis/hibernate
演算法和資料結構:

快速排序-手寫
top k問題
堆和棧的實現
字串的操作-手寫
一些常見的演算法設計題:求連結串列的倒數第k個節點、判斷連結串列是否有環、青蛙跳臺階等