普華永道高級JAVA面試記錄


最近在考慮換個工作 原因?咱能不逗嗎?

 

一面感覺發揮不錯  二面之后累覺不愛  基本上浪費了半天的工資(好多錢啊~~~)

 

PWD上海地址在浦東軟件園  工作環境說實話沒我現在工作的環境好,不過里面的人給人感覺不錯。前台不NICE但給人很舒服的感覺。

 

說重點,面試過程。

 

面試分筆試和面試  筆試面試都是英文(回答問題要是實在英文撐不住了就用中文)

 

筆試題偏基礎  說兩個注意點  手寫冒泡排序  和 用英文描述一個設計模式

 

面試有兩次

 

第一個考官是個微胖界的胖子(很和藹)  第二個有點娘(很刁鑽)

 

問題

 

JVM機制 hibernate機制 各種集合 SSH框架

 

不想寫了  直接貼我之前准備的問題(答案自己寫的 僅供參考)

 

類的繼承 
是JAVA面向對象的主要特性,子類可使用父類的所有功能,也可拓展新的功能。一個類只能繼承一個父類,但是可以實現多個接口。 

構造函數的調用順序 
構造函數一般用來初始化對象,給對象賦值。 Object---->B的域----->B構造函數里的方法體----->A的域----->A構造函數。 

子類對父類函數重寫 
繼承父類后 同名且同參同返回 

子類的加載順序 

父類--靜態變量 
父類--靜態初始化塊 
子類--靜態變量 
子類--靜態初始化塊 
*************in main*************** 
父類--變量 
父類--初始化塊 
父類--構造器 
子類--變量 
子類--初始化塊 
子類--構造器 
*************second subClass*************** 
父類--變量 
父類--初始化塊 
父類--構造器 
子類--變量 
子類--初始化塊 
子類--構造器 

JVM class loader對類是如何加載的和加載順序 
首先,總共有四個加載器:bootstrap(核心)、exptension(擴展)、appclassloader(system)、URLclassloader(遠程)。 

繼承關系,從高到低,ABCD 如果B調用某方法 會首先請求A去找 A沒找到 則B自己找 B也沒找到 則classnotfound 而不會去請求C找 

函數的可視范圍 


函數被重寫原理 
首先弄明白JAVA中的四個特性:組合、繼承、重載、重寫。組合:一個類引用另一個類,而實際運行中,繼承其實就是隱式的組合,也就是在子類中保存一個實例對象super,並指向父類。 所以,函數被重寫的原理就是:在執行中,如需調用某方法,先在子類中找,如果沒找到,則會去在父類中找,如果找到了,也就是重載了。 

集合類的分類 
collection(list<arrayList\linkendList\vector>set<>) map(hashMap\hashTable\weakHashTable) 

區別 arraylist非同步 滿增50% vector同步滿增100% set不可重復 

SET,LIST,MAP的實現類和之間的關系 
set list都實現collection 三者都為接口 不可實例化 

TREEMAP的特性 
有序 

TREESET的特性 
唯一 有序 不為空 

LIST的實現類之間的區別 
arraylist linkendlist vector 

不同集合類在不同情況下的應用 
快速查詢 arraylist 批量增加 linkendlist 
增刪查 hashmap 遍歷treemap 

HASH的原理 
hash其實就是以空間換時間 將至轉成HASH值 根據數組長度取余 將余數作為該數據數組下標 如果被占用 則重新HASH+1 數組是線性結構中定位最快的 

HASHMAP,HASHSET 

線程 


線程的不同實現 
繼承thread或者實現runnable 

THREAD和RUNNABLE的區別和關系 
thread為繼承類 runnable為接口 
Thread運行在父類的run方法中,Runnable運行在實現Runnable接口的子類對象run方法中。 
runnable可以打破一個類只能繼承一個父類的局限性且適合資源共享 
thread也是實現runnable 

RUNNABLE和CALLABLE 


如何捕捉線程異常 
set uncaughExceiption 

為什么要用EXECUTOR 

高並發解決方案 
HTML靜態化 負載均衡 圖片服務器分離 數據庫集群 緩存 

如何使用synchronized關鍵字 
同步 

Producer and consumer 


Reflection如何使用,在什么情況下用 
反射是JAVA的特性之一,能夠通過getClass 獲取到某一個Class對象 ,並查看該Class的基本情況 
媽蛋 具體什么場景下使用反射哥也不知道好嗎。。。hibernate不就是用的反射嗎 利用反射可以改變類的屬性! 

Generics的作用 
代碼規范話 減少變異后的強制類型轉換 健壯 安全 

I/O 


Readers and Writers 


DATABASE JDBC 


SSH 相關問題 


SPRING相關問題 


IOC AOP實現 


SPRING BEAN的scope的定義 
singleton 共享實例 prototype 每次請求new一個實例 request 每次請求new一個實例 但僅當前httprequest內有效 

JQUERY事件綁定 
$('#button').blind(function(){alert()}}) 

AJAX 

Java 死鎖,如何解決 
JAVA中死鎖 我靠 這玩意兒一般原因都很復雜的 根本沒有萬金油式的解決方案好嗎 我們能做的只能避免 慎用synchronize 多線程是盡量按順序執行 

最近項目介紹,問些項目里相關問題如struts原理 
set List區別 
equaIs hashcode及其原理一跟地址有關嗎 


最熟悉項目介紹,圍繞項目中的ssh提問,例一對多如何定義,可不可以用List,與set區別 
sQL調優 
數據庫索引 

主要問的問題: 
1)spring的IOC和AOP 


2)struts1和struts2的區別 


3)多線程,死鎖等 


4)hibernate的緩存分類,實體狀態,一對多和多對多實現等 


5)spring,struts,hibernate如何集成 


6)set,list等集合的相關特性 

7)實現不重復的100個隨機數的方法 

8)hibernate中inverse的使用 
控制映射關系 默認為FALSE 所以 在多對多中 如果某一表數據變化 需要多張表都更新 最好將某張表設為TRUE 則不會重復更新 

9)spring中事務的實現 
像Struts2一樣,都是憑借強大的攔截器功能對業務邏輯方法的調用進行攔截,然后又BeanNameAutoProxyCreator自動生成事務代理,最后送事務管理器,統一管理 

10)常用的設計模式 

11)hash code的作用 
提升效率 比如set集合 它是無序不重復的 在對SET新增記錄時 為了滿足不重復 則在插入之前必須先equals一個個校驗存不存在 效率低下 這里 HASHCODE就該上場了 每次新增,先HASH一把 然后將值直接放到HASH值相應的地址 如果改空間被占用 則再equals一把 
如果相等 則不存 不等則HASH+1

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM