520mengcheng
隨著互聯(lián)網(wǎng)的不斷發(fā)展,java開發(fā)成為了眾多開發(fā)工程師使用的主流編程開發(fā)語(yǔ)言。今天,java課程培訓(xùn)機(jī)構(gòu)就一起來(lái)了解一下,在java程序員面試過(guò)程中,有哪些比較常見的技術(shù)面試問(wèn)題需要我們了解。
1、什么是線程?
線程是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的小單位,它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。程序員可以通過(guò)它進(jìn)行多處理器編程,你可以使用多線程對(duì)運(yùn)算密集型任務(wù)提速。比如,如果一個(gè)線程完成一個(gè)任務(wù)要100毫秒,那么用十個(gè)線程完成改任務(wù)只需10毫秒。
2、線程和進(jìn)程有什么區(qū)別?
線程是進(jìn)程的子集,一個(gè)進(jìn)程可以有很多線程,每條線程并行執(zhí)行不同的任務(wù)。不同的進(jìn)程使用不同的內(nèi)存空間,而所有的線程共享一片相同的內(nèi)存空間。每個(gè)線程都擁有單獨(dú)的棧內(nèi)存用來(lái)存儲(chǔ)本地?cái)?shù)據(jù)。
3、如何在Java中實(shí)現(xiàn)線程?
兩種方式:類的實(shí)例就是一個(gè)線程但是它需要調(diào)用接口來(lái)執(zhí)行,由于線程類本身就是調(diào)用的Runnable接口所以你可以繼承類或者直接調(diào)用Runnable接口來(lái)重寫run()方法實(shí)現(xiàn)線程。
4、有哪些不同的線程生命周期?
當(dāng)我們?cè)贘ava程序中新建一個(gè)線程時(shí),它的狀態(tài)是New。當(dāng)我們調(diào)用線程的start()方法時(shí),狀態(tài)被改變?yōu)镽unnable。線程調(diào)度器會(huì)為Runnable線程池中的線程分配CPU時(shí)間并且講它們的狀態(tài)改變?yōu)镽unning。其他的線程狀態(tài)還有Waiting,Blocked和Dead。
5、你對(duì)線程優(yōu)先級(jí)的理解是什么?
每一個(gè)線程都是有優(yōu)先級(jí)的,一般來(lái)說(shuō),高優(yōu)先級(jí)的線程在運(yùn)行時(shí)會(huì)具有優(yōu)先權(quán),但這依賴于線程調(diào)度的實(shí)現(xiàn),這個(gè)實(shí)現(xiàn)是和操作系統(tǒng)相關(guān)的(OSdependent)。我們可以定義線程的優(yōu)先級(jí),但是這并不能保證高優(yōu)先級(jí)的線程會(huì)在低優(yōu)先級(jí)的線程前執(zhí)行。線程優(yōu)先級(jí)是一個(gè)int變量(從1-10),1代表低優(yōu)先級(jí),10代表高優(yōu)先級(jí)。
6、什么是死鎖(Deadlock)?如何分析和避免死鎖?
死鎖是指兩個(gè)以上的線程永遠(yuǎn)阻塞的情況,這種情況產(chǎn)生至少需要兩個(gè)以上的線程和兩個(gè)以上的資源。
分析死鎖,我們需要查看Java應(yīng)用程序的線程轉(zhuǎn)儲(chǔ)。我們需要找出那些狀態(tài)為BLOCKED的線程和他們等待的資源。每個(gè)資源都有一個(gè)唯一的id,用這個(gè)id我們可以找出哪些線程已經(jīng)擁有了它的對(duì)象鎖。
坦丁堡的血淚
一、要求面試Java工程師,首先需要了解該職位的基本要求,包括所需的編程技能、技術(shù)能力、軟件開發(fā)經(jīng)驗(yàn)、架構(gòu)設(shè)計(jì)能力等。二、在面試的過(guò)程中,產(chǎn)品經(jīng)理可以就Java工程師的編程能力進(jìn)行深入的詢問(wèn),了解其具體的編程技術(shù)以及使用的工具;同時(shí)可以就其實(shí)際的開發(fā)經(jīng)驗(yàn),比如項(xiàng)目流程、項(xiàng)目進(jìn)度、項(xiàng)目管理等方面進(jìn)行深入的詢問(wèn),以了解其是否有經(jīng)驗(yàn),是否有能力完成項(xiàng)目。三、在面試過(guò)程中,產(chǎn)品經(jīng)理可以就Java工程師的技術(shù)架構(gòu)設(shè)計(jì)能力進(jìn)行深入的詢問(wèn),如何建立一個(gè)架構(gòu)、如何設(shè)計(jì)數(shù)據(jù)庫(kù)等;同時(shí)可以就其遇到的技術(shù)問(wèn)題和解決方案進(jìn)行詢問(wèn),以評(píng)估其解決問(wèn)題的能力。四、在面試過(guò)程中,產(chǎn)品經(jīng)理可以就Java工程師的團(tuán)隊(duì)協(xié)作能力進(jìn)行深入的詢問(wèn),比如在團(tuán)隊(duì)合作中,如何處理沖突、如何分享知識(shí)等;同時(shí)也可以就其自我學(xué)習(xí)能力進(jìn)行詢問(wèn),以衡量其能力是否足以勝任該職位。
小宇巴波比
一般面試先是自我介紹,這個(gè)就不給你寫了,簡(jiǎn)單說(shuō)幾句就行,不是重點(diǎn)。
接下來(lái)會(huì)讓你介紹一下你做過(guò)的項(xiàng)目,這絕對(duì)是一個(gè)非常關(guān)鍵的問(wèn)題,面試官一眼就能看出來(lái)你的能力,如果覺得你行,后面才會(huì)問(wèn)細(xì)節(jié)技術(shù)問(wèn)題,否則就開始應(yīng)付你了。
這個(gè)問(wèn)題該怎么答?一定要以技術(shù)和架構(gòu)為主,業(yè)務(wù)邏輯為輔。說(shuō)的越底層越好,比如你們公司項(xiàng)目底層是通過(guò)什么連接數(shù)據(jù)庫(kù)的?哪種方法?為什么這么選擇?
是否用到了spring的DI?是否將action也交給spring托管了?都在哪些地方使用了spring的事務(wù)?其實(shí)這種問(wèn)題多了去了,最主要的是你一定要非常了解你做過(guò)的項(xiàng)目,別說(shuō)業(yè)務(wù)邏輯,那都沒用。
去看看hibernate的面試題,網(wǎng)上有。如果你的項(xiàng)目沒用這個(gè)技術(shù),就別提,否則一問(wèn)你就傻了,對(duì)技術(shù)經(jīng)理的面試千萬(wàn)別裝
struts的原理?spring的原理?hibernate的save和方法有什么不同?這些都必須清楚,如果我上面提到的任何一點(diǎn)你不清楚,那就別去面試了,絕不夸張,這些都是基礎(chǔ)。
優(yōu)質(zhì)工程師考試問(wèn)答知識(shí)庫(kù)