中文国产日韩欧美视频,午夜精品999,色综合天天综合网国产成人网,色综合视频一区二区观看,国产高清在线精品,伊人色播,色综合久久天天综合观看

java面試題

時(shí)間:2024-11-17 16:08:47 學(xué)人智庫(kù) 我要投稿

java面試題

  Java具有簡(jiǎn)單性、面向?qū)ο、分布式、健壯性、安全性、平臺(tái)x立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn),下面是小編整理的2017年java面試題,希望對(duì)你有幫助。

java面試題

  1. 什么情況下會(huì)發(fā)生棧內(nèi)存溢出。

  至于是堆內(nèi)存溢出還是方法區(qū)內(nèi)存溢出還是棧內(nèi)存溢出,其實(shí)可以用一些工具比如

  JConsole來(lái)監(jiān)視

  2. JVM 的內(nèi)存結(jié)構(gòu),Eden 和 Survivor 比例。

  3. jvm 中一次完整的 GC 流程是怎樣的,對(duì)象如何晉升到老年代,說(shuō)說(shuō)你知道的幾種主要的 jvm 參數(shù)。

  4. 你知道哪幾種垃圾收集器,各自的優(yōu)缺點(diǎn),重點(diǎn)講下 cms,包括原理,流程,優(yōu)缺點(diǎn)

  5. 垃圾回收算法的實(shí)現(xiàn)原理。

  6. 當(dāng)出現(xiàn)了內(nèi)存溢出,你怎么排錯(cuò)。

  7. JVM 內(nèi)存模型的相關(guān)知識(shí)了解多少,比如重排序,內(nèi)存屏障,happen-before,主內(nèi)存,工作內(nèi)存等。

  8. 簡(jiǎn)單說(shuō)說(shuō)你了解的類(lèi)加載器。

  9. 講講 JAVA 的反射機(jī)制。

  10. 你們線上應(yīng)用的 JVM 參數(shù)有哪些。

  11. g1 和 cms 區(qū)別,吞吐量?jī)?yōu)先和響應(yīng)優(yōu)先的垃圾收集器選擇。

  12. 請(qǐng)解釋如下 jvm 參數(shù)的含義:

  -server -Xms512m -Xmx512m -Xss1024K

  -XX:PermSize=256m -XX:MaxPermSize=512m -XX:MaxTenuringThreshold=20 XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly。

  http://blog.csdn.net/a503921892/article/details/39048889

  Xmx3550m:設(shè)置JVM最大可用內(nèi)存為3550M。

  -Xms3550m:設(shè)置JVM初始內(nèi)存為3550m。此值可以設(shè)置與-Xmx相同,以避免每次垃圾回收完成后JVM重新分配內(nèi)存。

  -Xss128k: 設(shè)置每個(gè)線程的堆棧大小。在相同物理內(nèi) 存下,減小這個(gè)值能生成更多的線程。但是操作系統(tǒng)對(duì)一個(gè)進(jìn)程內(nèi)的線程數(shù)還是有限制的,不能無(wú)限生成,

  經(jīng)驗(yàn)值在3000~5000左右

  -XX:MaxPermSize=16m:設(shè)置持久代大小為16m

  -XX:MaxTenuringThreshold=0:設(shè)置垃圾最大年齡。如果設(shè)置為0的話,則年輕代對(duì)象不經(jīng)過(guò)Survivor區(qū),直接進(jìn)入年老代。對(duì)于年老代比較多的應(yīng)用,可以提高效率。

  如果將此值設(shè)置為一個(gè)較大值,則年輕代對(duì)象會(huì)在Survivor區(qū)進(jìn)行多次復(fù)制,這樣可以增加對(duì)象再年輕代的存活時(shí)間,增加在年輕代即被回收的概論。

  開(kāi)源框架知識(shí)

  1. 簡(jiǎn)單講講 tomcat 結(jié)構(gòu),以及其類(lèi)加載器流程。

  2. tomcat 如何調(diào)優(yōu),涉及哪些參數(shù)。

  3. 講講 Spring 加載流程。

  4. 講講 Spring 事務(wù)的傳播屬性。

  PROPAGATION_REQUIRED--支持當(dāng)前事務(wù),如果當(dāng)前沒(méi)有事務(wù),就新建一個(gè)事務(wù)。這是最常見(jiàn)的選擇。

  5. Spring 如何管理事務(wù)的。

  6. Spring 怎么配置事務(wù)(具體說(shuō)出一些關(guān)鍵的 xml元素)。

  tx:advice,aop:config

  7. 說(shuō)說(shuō)你對(duì) Spring 的理解,非單例注入的原理?它的生命周期?循環(huán)注入的原理,aop 的實(shí)現(xiàn)原理,說(shuō)說(shuō) aop 中的幾個(gè)術(shù)語(yǔ),它們是怎么相互工作的。

  8. Springmvc 中 DispatcherServlet初始化過(guò)程。

  操作系統(tǒng)

  1. Linux 系統(tǒng)下你關(guān)注過(guò)哪些內(nèi)核參數(shù),說(shuō)說(shuō)你知道的。

  2. Linux 下 IO 模型有幾種,各自的含義是什么。

  3. epoll 和 poll 有什么區(qū)別。

  4. 平時(shí)用到哪些 Linux 命令。

  5. 用一行命令查看文件的最后五行。

  輸出test文件的后五行:

  liyi@liyi:~/Desktop > tail -n 5 test

  輸出test文件的前五行:

  liyi@liyi:~/Desktop > head -n 5 test

  6. 用一行命令輸出正在運(yùn)行的 java 進(jìn)程。

  7. 介紹下你理解的操作系統(tǒng)中線程切換過(guò)程。

  8. 進(jìn)程和線程的區(qū)別。

  多線程

  1. 多線程的幾種實(shí)現(xiàn)方式,什么是線程安全。

  2. volatile 的原理,作用,能代替鎖么。

  3. 畫(huà)一個(gè)線程的生命周期狀態(tài)圖。

  4. sleep 和 wait 的區(qū)別。

  5. Lock 與 Synchronized 的區(qū)別。

  6. synchronized 的原理是什么,解釋以下名詞:重排序,自旋鎖,偏向鎖,輕量級(jí)鎖,可重入鎖,公平鎖,非公平鎖,樂(lè)觀鎖,悲觀鎖。

  7. 用過(guò)哪些原子類(lèi),他們的原理是什么。

  8. 用過(guò)線程池嗎,newCache 和 newFixed 有什么區(qū)別,他們的原理簡(jiǎn)單概括下,構(gòu)造函數(shù)的各個(gè)參數(shù)的含義是什么,比如 coreSize,maxsize 等。

  9. 線程池的關(guān)閉方式有幾種,各自的區(qū)別是什么。

  10. 假如有一個(gè)第三方接口,有很多個(gè)線程去調(diào)用獲取數(shù)據(jù),現(xiàn)在規(guī)定每秒鐘最多有 10 個(gè)線程同時(shí)調(diào)用它,如何做到。

  11. spring 的 controller 是單例還是多例,怎么保證并發(fā)的安全。

  singleton : bean在每個(gè)Spring ioc 容器中只有一個(gè)實(shí)例。

  prototype:一個(gè)bean的定義可以有多個(gè)實(shí)例。

  request:每次http請(qǐng)求都會(huì)創(chuàng)建一個(gè)bean,該作用域僅在基于web的Spring ApplicationContext情形下有效。

  12. 用三個(gè)線程按順序循環(huán)打印 abc 三個(gè)字母,比如 abcabcabc。

  思路:解題思路大概是這樣的,開(kāi)啟三個(gè)線程,每個(gè)線程一次打印一個(gè)字母,并且按照一定的順序打印,當(dāng)打印A的時(shí)候,其他線程處于阻塞狀態(tài),打印完A以后,

  將線程解鎖,讓打印B的那個(gè)線程開(kāi)啟,其他線程處于阻塞狀態(tài),同理打印C的時(shí)候,阻塞其他線程,這三個(gè)線程順序循環(huán),就達(dá)到順序多次打印ABC的目的了。

  這道題看似思路簡(jiǎn)單,其實(shí)主要需要用到wait()方法和notify()方法,還有關(guān)鍵字synchronized,只有充分理解了這些,才能解出這道題。下面我有必要講解一下這兩個(gè)方法,

  還有關(guān)鍵字synchronized。

  13. ThreadLocal 用過(guò)么,用途是什么,原理是什么,用的時(shí)候要注意什么。

  14. 如果讓你實(shí)現(xiàn)一個(gè)并發(fā)安全的鏈表,你會(huì)怎么做。

  15. 有哪些無(wú)鎖數(shù)據(jù)結(jié)構(gòu),他們實(shí)現(xiàn)的原理是什么。

  16. 講講 java 同步機(jī)制的 wait 和 notify。

  17. 多線程如果線程掛住了怎么辦。

  18. countdowlatch 和 cyclicbarrier的內(nèi)部原理和用法,以及相互之間的差別。

  19. 使用 synchronized 修飾靜態(tài)方法和非靜態(tài)方法有什么區(qū)別。

  所有的非靜態(tài)同步方法用的都是同一把鎖——實(shí)例對(duì)象本身,也就是說(shuō)如果一個(gè)實(shí)例對(duì)象的非靜態(tài)同步方法獲取鎖后,

  該實(shí)例對(duì)象的其他非靜態(tài)同步方法必須等待獲取鎖的方法釋放鎖后才能獲取鎖,

  可是別的實(shí)例對(duì)象的非靜態(tài)同步方法因?yàn)楦搶?shí)例對(duì)象的非靜態(tài)同步方法用的是不同的鎖,

  所以毋須等待該實(shí)例對(duì)象已獲取鎖的非靜態(tài)同步方法釋放鎖就可以獲取他們自己的鎖。

  而所有的靜態(tài)同步方法用的也是同一把鎖——類(lèi)對(duì)象本身,這兩把鎖是兩個(gè)不同的對(duì)象,

  所以靜態(tài)同步方法與非靜態(tài)同步方法之間是不會(huì)有競(jìng)態(tài)條件的。但是一旦一個(gè)靜態(tài)同步方法獲取鎖后,

  其他的靜態(tài)同步方法都必須等待該方法釋放鎖后才能獲取鎖,而不管是同一個(gè)實(shí)例對(duì)象的靜態(tài)同步方法之間,

  還是不同的實(shí)例對(duì)象的靜態(tài)同步方法之間,只要它們同一個(gè)類(lèi)的實(shí)例對(duì)象!

  20. 簡(jiǎn)述 ConcurrentLinkedQueue 和 LinkedBlockingQueue 的用處和不同之處。

  21. 導(dǎo)致線程死鎖的原因?怎么解除線程死鎖。

  22. 非常多個(gè)線程(可能是不同機(jī)器),相互之間需要等待協(xié)調(diào),才能完成某種工作,問(wèn)怎么設(shè)計(jì)這種協(xié)調(diào)方案。

  23. 正確使用 Volatile 變量

  正確使用 volatile 變量的條件

  您只能在有限的一些情形下使用 volatile 變量替代鎖。要使 volatile 變量提供理想的線程安全,必須同時(shí)滿足下面兩個(gè)條件:

  1對(duì)變量的寫(xiě)操作不依賴于當(dāng)前值。

  2該變量沒(méi)有包含在具有其他變量的不變式中。

  http://www.ibm.com/developerworks/cn/java/j-jtp06197.html

  TCP與HTTP

  1. http1.0 和 http1.1 有什么區(qū)別。

  在http1.0中,當(dāng)建立連接后,客戶端發(fā)送一個(gè)請(qǐng)求,服務(wù)器端返回一個(gè)信息后就關(guān)閉連接,

  當(dāng)瀏覽器下次請(qǐng)求的時(shí)候又要建立連接,顯然這種不斷建立連接的方式,會(huì)造成很多問(wèn)題。

  在http1.1中,引入了持續(xù)連接的概念,通過(guò)這種連接,瀏覽器可以建立一個(gè)連接之后,

  發(fā)送請(qǐng)求并得到返回信息,然后繼續(xù)發(fā)送請(qǐng)求再次等到返回信息,也就是說(shuō)客戶端可以連續(xù)發(fā)送多個(gè)請(qǐng)求,而不用等待每一個(gè)響應(yīng)的到來(lái)。

  2. TCP 三次握手和四次揮手的流程,為什么斷開(kāi)連接要 4次,如果握手只有兩次,會(huì)出現(xiàn)什么。

  3. TIME_WAIT 和 CLOSE_WAIT 的區(qū)別。

  4. 說(shuō)說(shuō)你知道的幾種 HTTP 響應(yīng)碼,比如 200, 302, 404。

  5. 當(dāng)你用瀏覽器打開(kāi)一個(gè)鏈接的時(shí)候,計(jì)算機(jī)做了哪些工作步驟。

  6. TCP/IP 如何保證可靠性,說(shuō)說(shuō) TCP 頭的結(jié)構(gòu)。

  7. 如何避免瀏覽器緩存。

  8. 簡(jiǎn)述 Http 請(qǐng)求 get 和 post 的區(qū)別以及數(shù)據(jù)包格式。

  GET提交,請(qǐng)求的數(shù)據(jù)會(huì)附在URL之后(就是把數(shù)據(jù)放置在HTTP協(xié)議頭<request-line>中

  POST提交:把提交的數(shù)據(jù)放置在是HTTP包的包體<request-body>中

[2017年java面試題]

【java面試題】相關(guān)文章:

java面試題(2)08-13

java面試題(3)06-19

高薪Java面試題07-26

java面試題及答案10-03

java面試題(最新)09-16

經(jīng)典java面試題及答案06-11

cvte java面試題07-02

Java框架面試題09-03

瞬聯(lián)java面試題09-23

Java開(kāi)發(fā)崗位面試題11-06