gc100 root,ChimeraTool

Java程序員面試中容易被問哪些問題?

gc100 root,ChimeraTool


由于我每年都會面試不少程序員,其中就包括相當數量的Java程序員,所以就這個問題,跟頭條的廣大網友交流一下 。Java工程師面試也是有一定的側重點,做不同的研發方向,問題上也有所區別 。另外,初級程序員與主力程序員的面試問題也有很大的不同,總的來說就是方向與定位相結合,下面為大家一一描述 。Java初級程序員面試面試Java初級程序員的流程相對來說比較簡單,通常是兩輪面試,首輪面試一般進行技術面試,次輪面試通常是有HR統一安排關于職業規劃以及心理方面的面試(大部分情況是走個流程),這兩輪面試中,技術面試起到了關鍵的作用 。
面試初級程序員(2-3級)一般從技術細節入手,要通過面試,首先要知道初級程序員都需要具備哪些能力 。下面先描述一下作為一個Java初級程序員(2-3級,Web方向為主)應該滿足哪些要求:清晰Java面向對象編程步驟,理解封裝、繼承、多態等核心概念,理解基本的前端內容(HTML、CSS、JavaScript) 。
能理解程序流程圖描述的功能需求,能獨立完成功能模塊的編寫、部署,能理解功能模塊之間的交互關系,能完成功能模塊之間的消息傳遞和處理 。能理解MVC、DAO等框架,并在實際開發中熟練使用,能獨立完成前后臺的數據處理,能完成各種認證功能的處理 。能使用數據庫連接池等基本優化方式提高程序運行效率 。能理解容器在程序運行中的作用,能配置各種容器的基本參數 。
對程序的安全性有一定的理解,能避免初級的安全性問題 。能處理一定數量的并發問題,能解決多線程情況下的數據安全問題 。能理解不同角色的任務分配,能進行有效溝通 。常見框架的使用,比如SpringMVC等 。初級程序員的工作往往是編寫程序基本功能組件,是保證程序質量的一個重要環節,所以團隊的整體能力往往并不是由架構師決定的,反而是由眾多的初級程序員決定的 。
Java主力程序員面試主力程序員的面試通常要3輪或4輪,當然如果你走到了后面的兩輪,基本上選擇權就在你手里了,后面的兩輪面試公司會給你安排一個看似比較美好的職業發展規劃,因為主力程序員不僅要編碼通常還承擔者一部分管理工作(項目責任人),也是管理層比較倚重的 。主力程序員的技術面試流程并沒有那么多細節問題,首先要了解一下做過哪些項目,在項目中都承擔了什么任務,項目中遇到了哪些問題,怎么解決的等等 。
通常主力程序員的面試時間也比較長(2至3個小時),面試的氛圍也比初級程序員要輕松很多 。主力程序員大部分是推薦上來的,有人力資源公司推薦的,也有公司內推上來的,當然也有主動投送簡歷要求面試的 。一般對主力程序員都會有背景調查,這一方面是對公司負責,另一方面也是對應聘者應有的尊重 。希望通過我的回答,大家能對Java程序員的面試有一個基本的了解 。
JVM-GC垃圾回收算法中,如何判定一個對象是否是可回收的對象?
gc100 root,ChimeraTool


首先明確對象(引用)類型:1 軟引用 SoftReference有些用,但是并非必需,用軟引用關聯的對象,系統將要發生OOM(out of memory)之前,這些對象就會被回收 。2 弱引用3 虛引用 PhantomReference最弱,被垃圾回收的時候會收到一個通知 。4 強引用new創建 。軟引用、弱引用在jdk1.2才有 。
一般使用強引用,內存不夠情況例外 。軟引用(SoftReference)和弱引用 (WeakReference),有時候做緩存使用 。如何判斷對象是否可以被回收?方法一、引用計數法顧名思義,計算對象被引用的次數 。但是引用計數法已經落后了,可達性分析能夠解決互相引用的問題(兩種方法都是基于強引用) 。方法二、可達性分析可達性指GC Root能否找到某一對象,如果不能該對象可大致(不絕對,后面會講)認為能夠被回收 。

推薦閱讀