bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

【Java】Java開發(fā)工程師面試題目-創(chuàng)新互聯(lián)

Java開發(fā)工程師面試題目
  • 01. 并行和并發(fā)有什么區(qū)別?
  • 02. 進(jìn)程與線程的區(qū)別?
  • 03. 守護(hù)線程是什么?
  • 04. 創(chuàng)建線程有哪幾種方式?
  • 05. runnable和callable的區(qū)別是什么?
  • 06. 簡述JDK、JRE、JVM之間的關(guān)系
  • 07. 描述一下類加載機(jī)制的含義和過程
  • 08. 說說你對Run-time Data Areas的理解
  • 09.分布式系統(tǒng)的設(shè)計(jì)目標(biāo):
  • 10.分布式事務(wù)有哪些解決方案?

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、秭歸網(wǎng)站維護(hù)、網(wǎng)站推廣。01. 并行和并發(fā)有什么區(qū)別?

從軟件的角度來說,并發(fā)就是在一段時(shí)間內(nèi)以交替的方式去完成多個(gè)任務(wù),而并行就是以齊頭并進(jìn)的方式去完成多個(gè)任務(wù)。
從硬件的角度來說,在一個(gè)處理器一次只能夠運(yùn)行一個(gè)線程的情況下,并發(fā)可以有一個(gè)處理器通過使用時(shí)間片分配的方式實(shí)現(xiàn),而并行則需要靠多個(gè)處理器在同一時(shí)刻各自運(yùn)行一個(gè)線程來實(shí)現(xiàn)。

多線程的實(shí)質(zhì)就是實(shí)現(xiàn)并發(fā)化

02. 進(jìn)程與線程的區(qū)別?
  • 性質(zhì)不同:
    • 進(jìn)程(Process)是程序向操作系統(tǒng)申請資源(如內(nèi)存空間和文件句柄)的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。
    • 線程(thread)是進(jìn)程中可獨(dú)立執(zhí)行的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。
  • 適用范圍不同:
    • 一個(gè)進(jìn)程可以包含多個(gè)線程。使用進(jìn)程目的在于清晰地刻畫動態(tài)系統(tǒng)的內(nèi)在規(guī)律,有效管理和調(diào)度進(jìn)入計(jì)算機(jī)系統(tǒng)主存儲器運(yùn)行的程序。
    • 同一個(gè)進(jìn)程中的所有線程共享該進(jìn)程的資源,如內(nèi)存空間、文件句柄等。有內(nèi)核線程、用戶線程等
03. 守護(hù)線程是什么?

守護(hù)線程是運(yùn)行在后臺的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。在Java中垃圾回收線程就是特殊的守護(hù)線程。

04. 創(chuàng)建線程有哪幾種方式?

Java標(biāo)準(zhǔn)庫類java.lang.Thread就是Java平臺對線程的實(shí)現(xiàn) 。Thread類或其子類的一個(gè)實(shí)例就是一個(gè)線程。
多線程的實(shí)現(xiàn)方式有兩類:

  • 常見的2種:
    • 繼承Thread類: Thread類實(shí)際上是Runnable接口的一個(gè)實(shí)現(xiàn)類
    • 實(shí)現(xiàn)Runnable接口:Runnable接口可以被看作對任務(wù)進(jìn)行的抽象,任務(wù)的處理邏輯就體現(xiàn)在run方法之中。
  • 不常見的2種:
  • Callable接口、Future Task創(chuàng)建線程
  • 通過線程池創(chuàng)建線程。優(yōu)先使用ThreadPoolExecutor,不建議使用Executor

備注:Thread類的兩個(gè)常用構(gòu)造器是:Thread()和Thread(Runnable target)。相應(yīng)地,Java語言種創(chuàng)建線程的有兩種常用方式。一種是使用第一個(gè)構(gòu)造器:定義Thread類的子類,在該子類種覆蓋(Override)run方法并在該方法種實(shí)現(xiàn)線程任務(wù)處理邏輯;另一種是使用第二個(gè)構(gòu)造器:創(chuàng)建一個(gè)java.lang.Runnable接口的實(shí)例,并在該實(shí)例的run方法種實(shí)現(xiàn)任務(wù)處理邏輯,然后以該Runnable接口實(shí)例作為構(gòu)造器的參數(shù)直接創(chuàng)建(new)一個(gè)Thread類的實(shí)例。

但是不管是采用哪種方式創(chuàng)建線程,一旦線程的run方法被執(zhí)行(由Java虛擬機(jī)調(diào)用)結(jié)束,相應(yīng)的線程的運(yùn)行也就結(jié)束了。其中run方法執(zhí)行結(jié)束包括正常結(jié)束(run方法返回)以及代碼中拋出異常而導(dǎo)致的中止。

線程屬于“一次性用品”,start方法也只能被調(diào)用一次,多次調(diào)用同一個(gè)Thread實(shí)例的start方法會導(dǎo)致拋出IllegalThreadStateException異常。

在Java平臺中,一個(gè)線程就是一個(gè)對象,Java虛擬機(jī)會為每個(gè)線程分配調(diào)用棧(Call Stack)所需的內(nèi)存空間。調(diào)用棧用于跟蹤Java代碼(方法)間的調(diào)用關(guān)系以及Java代碼對本地代碼(Native Code,通常是C代碼)的調(diào)用。另外Java平臺中每個(gè)線程可能還有一個(gè)內(nèi)核線程與之對應(yīng)。

Java平臺中的任意一段代碼總是由確定的線程負(fù)責(zé)執(zhí)行的,這個(gè)線程就相應(yīng)地被稱為這段代碼的執(zhí)行線程。同一段代碼可以被多個(gè)線程執(zhí)行。

如果沒有啟動線程而是在應(yīng)用代碼中直接調(diào)用線程的run方法的話,那么這個(gè)線程的run方法其實(shí)運(yùn)行在當(dāng)前線程(即run方法的調(diào)用方代碼的執(zhí)行線程)之中而不是運(yùn)行在其自身線程中,從而違背了創(chuàng)建線程的初衷。

Thread類所實(shí)現(xiàn)的

05. runnable和callable的區(qū)別是什么?

首先,它們都是接口。其次,Runnable接口中的run()方法的返回值是void,它做的事情只是純粹地去執(zhí)行run()方法中的代碼而已;然而,Callable接口中的call()方法是有返回值的,是一個(gè)泛型,和Future、FutureTask配合可以用來獲取異步執(zhí)行的結(jié)果。

06. 簡述JDK、JRE、JVM之間的關(guān)系

答:JDK是一套編寫Java應(yīng)用程序的工具包,也就是一個(gè)Java程序開發(fā)環(huán)境。包括Java的運(yùn)行環(huán)境,也就是JRE。Java虛擬機(jī),即JVM運(yùn)行在JRE中,屬于Java應(yīng)用程序運(yùn)行的載體。

07. 描述一下類加載機(jī)制的含義和過程

答:這里完整的描述應(yīng)該是Java虛擬機(jī)把描述類的數(shù)據(jù)從class文件加載到內(nèi)存的過程,這里邊包含多個(gè)步驟,包括:類文件的加載,數(shù)據(jù)的校驗(yàn)、變量的解析以及初始化,并最終將符號引用轉(zhuǎn)換為直接引用,最終使用。這些過程都是在Java運(yùn)行期間進(jìn)行的。其中“通過一個(gè)類的全限定名來獲取此類的二進(jìn)制字節(jié)流”的代碼稱為“類加載器”,類加載器依據(jù)雙親委派原則進(jìn)行類的加載。

08. 說說你對Run-time Data Areas的理解

答:從官網(wǎng)來看,Java運(yùn)行時(shí)數(shù)據(jù)區(qū)包括pc寄存器、Java虛擬機(jī)棧、堆、方法區(qū)、運(yùn)行時(shí)常量池以及本地方法棧。其中pc寄存器用來存儲線程執(zhí)行的字節(jié)碼的行號,Java虛擬機(jī)棧用來維護(hù)局部變量和結(jié)果的調(diào)用和方法返回,堆是存儲所有對象及其實(shí)例變量的內(nèi)存區(qū)域,而方法區(qū)存儲的是類的元數(shù)據(jù)信息,包括元數(shù)據(jù)、常量池、靜態(tài)變量、字段以及方法,運(yùn)行時(shí)常量池,即constant_pool相當(dāng)于符號表,用于解析變量方法和字段;本地方法棧用來為虛擬機(jī)使用到的Native方法服務(wù)。這里重點(diǎn)是Java虛擬機(jī)棧、Heap和方法區(qū)

09.分布式系統(tǒng)的設(shè)計(jì)目標(biāo):
  • 可擴(kuò)展性:通過對服務(wù)、存儲的擴(kuò)展來提高系統(tǒng)的處理能力,通過對多臺服務(wù)器的協(xié)同工作,來完成單臺服務(wù)器無法處理的任務(wù),尤其是高并發(fā)或者大數(shù)據(jù)量的任務(wù)。
  • 高可用,單點(diǎn)不影響整體,單點(diǎn)故障指系統(tǒng)中某個(gè)組件一旦失效,會讓整個(gè)系統(tǒng)無法工作
  • 無狀態(tài):無狀態(tài)的服務(wù)才能滿足部分機(jī)器宕機(jī)不影響全部,可以隨時(shí)進(jìn)行擴(kuò)展的需求。
  • 可管理:便于運(yùn)維、出問題能不能及時(shí)發(fā)現(xiàn)定位
  • 高可靠:同樣的請求返回同樣的數(shù)據(jù),更新能夠持久化,數(shù)據(jù)不會丟失
10.分布式事務(wù)有哪些解決方案?
  • 基于XA協(xié)議:兩階段提交和三階段提交,需要數(shù)據(jù)庫層面支持
  • 基于事務(wù)補(bǔ)償機(jī)制的:TCC,基于業(yè)務(wù)層面實(shí)現(xiàn)
  • 本地消息表:基于本地?cái)?shù)據(jù)庫+mq,維護(hù)本地狀態(tài)(進(jìn)行中),通過mq調(diào)用服務(wù),完成后響應(yīng)一條消息回調(diào),將狀態(tài)改成完成。需要配合定時(shí)任務(wù)掃描、重新發(fā)送消息調(diào)用服務(wù),需要保證冪等性
  • 基于事務(wù)消息:mq

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

文章標(biāo)題:【Java】Java開發(fā)工程師面試題目-創(chuàng)新互聯(lián)
文章路徑:http://vcdvsql.cn/article38/csejpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google響應(yīng)式網(wǎng)站App開發(fā)網(wǎng)站收錄軟件開發(fā)搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作