版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2026校招JAVA崗位筆試面試題庫(kù)及答案一、單項(xiàng)選擇題(每題2分,共20分)1.在Java中,以下關(guān)于HashMap與ConcurrentHashMap的描述正確的是:A.兩者都允許null鍵和null值B.ConcurrentHashMap在JDK8之后采用分段鎖機(jī)制C.HashMap在并發(fā)環(huán)境下使用putIfAbsent方法會(huì)拋出異常D.ConcurrentHashMap的size方法在并發(fā)場(chǎng)景下返回的是精確值答案:C解析:HashMap的putIfAbsent是JDK8之后提供的默認(rèn)方法,但在并發(fā)修改的情況下可能觸發(fā)fail-fast機(jī)制拋出ConcurrentModificationException;ConcurrentHashMap不允許null鍵或值;JDK8之后已廢棄分段鎖,改用CAS+synchronized;size方法在并發(fā)下是弱一致性,非精確值。2.以下代碼片段執(zhí)行后輸出結(jié)果為:```javainta=5;intb=a+++++a+a--+--a;System.out.println(b);```A.20B.22C.24D.26答案:B解析:運(yùn)算步驟為:5(a++)+7(++a,此時(shí)a=7)+7(a--)+5(--a),即5+7+7+5=22。3.關(guān)于Spring事務(wù)傳播行為,以下說(shuō)法正確的是:A.REQUIRED總是開(kāi)啟新事務(wù)B.NESTED如果當(dāng)前存在事務(wù)則嵌套執(zhí)行,否則新建事務(wù)C.NEVER如果當(dāng)前存在事務(wù)則掛起D.SUPPORTS如果沒(méi)有事務(wù)則拋出異常答案:B解析:NESTED底層依賴數(shù)據(jù)庫(kù)savepoint,無(wú)事務(wù)時(shí)行為與REQUIRED一致;REQUIRED使用當(dāng)前事務(wù);NEVER存在事務(wù)時(shí)拋異常;SUPPORTS無(wú)事務(wù)時(shí)以非事務(wù)方式運(yùn)行。4.在MySQL中,字段類型為varchar(200)且字符集為utf8mb4,理論上最多可存儲(chǔ)的漢字?jǐn)?shù)量為:A.200B.100C.50D.800答案:C解析:utf8mb4每個(gè)字符最多4字節(jié),MySQL對(duì)varchar長(zhǎng)度限制以字符計(jì)而非字節(jié),但行總字節(jié)上限65535,200字符即200漢字。5.以下關(guān)于JVMG1垃圾收集器的描述,錯(cuò)誤的是:A.可預(yù)測(cè)停頓時(shí)間模型B.采用標(biāo)記-復(fù)制算法C.不會(huì)產(chǎn)生浮動(dòng)垃圾D.支持并發(fā)標(biāo)記答案:C解析:G1在并發(fā)標(biāo)記階段與用戶線程并行,會(huì)產(chǎn)生浮動(dòng)垃圾,需通過(guò)下一次GC處理。6.在Linux中,查看當(dāng)前系統(tǒng)最大可打開(kāi)文件句柄數(shù)的命令是:A.ulimit-uB.ulimit-nC.ulimit-vD.ulimit-f答案:B解析:-n參數(shù)對(duì)應(yīng)openfiles。7.Redis中執(zhí)行`SETkeyvalueEX10NX`的作用是:A.僅當(dāng)key不存在時(shí)設(shè)置,且10秒后過(guò)期B.僅當(dāng)key存在時(shí)設(shè)置,且10毫秒后過(guò)期C.無(wú)論key是否存在都設(shè)置,10秒后過(guò)期D.僅當(dāng)key不存在時(shí)設(shè)置,且10毫秒后過(guò)期答案:A解析:NX為notexist,EX單位秒。8.以下哪個(gè)類加載器負(fù)責(zé)加載JDK核心類庫(kù):A.AppClassLoaderB.ExtClassLoaderC.BootstrapClassLoaderD.CustomClassLoader答案:C解析:Bootstrap由C++實(shí)現(xiàn),加載rt.jar等核心類。9.在Java并發(fā)包中,以下哪個(gè)隊(duì)列是無(wú)鎖實(shí)現(xiàn):A.LinkedBlockingQueueB.ArrayBlockingQueueC.ConcurrentLinkedQueueD.PriorityBlockingQueue答案:C解析:ConcurrentLinkedQueue基于CAS,無(wú)鎖。10.關(guān)于HTTPS握手過(guò)程,以下順序正確的是:A.ClientHello→ServerHello→Certificate→ServerKeyExchange→ClientKeyExchange→FinishedB.ClientHello→Certificate→ServerHello→ServerKeyExchange→ClientKeyExchange→FinishedC.ClientHello→ServerHello→ServerKeyExchange→Certificate→ClientKeyExchange→FinishedD.ClientHello→ServerHello→Certificate→ClientKeyExchange→ServerKeyExchange→Finished答案:A解析:標(biāo)準(zhǔn)TLS1.2握手流程。二、不定項(xiàng)選擇題(每題3分,共15分)11.以下哪些情況會(huì)導(dǎo)致FullGC:A.調(diào)用System.gc()B.老年代空間不足C.永久代/元空間不足D.晉升失?。╬romotionfailed)答案:ABCD解析:均可能觸發(fā)FullGC。12.關(guān)于SpringBoot自動(dòng)裝配,正確的是:A.@EnableAutoConfiguration是入口注解B.spring.factories文件在META-INF下C.條件注解可控制配置類是否生效D.@SpringBootApplication包含@ComponentScan答案:ABCD解析:全選。13.以下哪些設(shè)計(jì)模式屬于行為型:A.ObserverB.StrategyC.DecoratorD.Visitor答案:ABD解析:Decorator為結(jié)構(gòu)型。14.在MyBatis中,可防止SQL注入的做法有:A.使用{}占位符B.使用${}并拼接參數(shù)C.使用<bind>標(biāo)簽D.使用參數(shù)對(duì)象答案:ACD解析:${}直接拼接,存在注入風(fēng)險(xiǎn)。15.以下哪些算法可用于分布式ID生成:A.UUIDB.SnowflakeC.Leaf-segmentD.RedisINCR答案:ABCD解析:均可,但需權(quán)衡趨勢(shì)遞增、長(zhǎng)度、可讀性。三、填空題(每空2分,共20分)16.在Java中,實(shí)現(xiàn)線程安全的單例模式,最推薦的寫法是使用_________。答案:枚舉17.JVM默認(rèn)的新生代與老年代比例是_________。答案:1:218.MySQL中,InnoDB的聚簇索引葉子節(jié)點(diǎn)存儲(chǔ)的是_________。答案:整行數(shù)據(jù)19.Redis的String底層采用_________編碼,當(dāng)長(zhǎng)度小于44字節(jié)時(shí)。答案:embstr20.在Spring中,Bean的默認(rèn)作用域是_________。答案:singleton21.Java8中,接口內(nèi)可定義的靜態(tài)方法使用_________關(guān)鍵字。答案:static22.Linux下,查看某個(gè)端口被哪個(gè)進(jìn)程占用的命令是_________。答案:lsof-i:port23.在Git中,將暫存區(qū)內(nèi)容回退到工作區(qū)的命令是_________。答案:gitresetHEAD24.線程池ThreadPoolExecutor中,最大線程數(shù)由_________參數(shù)決定。答案:maximumPoolSize25.TCP三次握手過(guò)程中,第二次握手服務(wù)器發(fā)送的報(bào)文段標(biāo)志位是_________。答案:SYN+ACK四、代碼閱讀題(每題5分,共15分)26.閱讀以下代碼,寫出輸出結(jié)果:```javapublicclassTest{privatestaticbooleanstop=false;publicstaticvoidmain(String[]args)throwsInterruptedException{newThread(()->{while(!stop){//empty}System.out.println("ThreadAexit");}).start();Thread.sleep(100);stop=true;System.out.println("Mainexit");}}```答案:程序可能永不打印“ThreadAexit”。解析:stop未使用volatile,線程A可能感知不到主線程修改,出現(xiàn)可見(jiàn)性問(wèn)題。27.指出下面代碼的問(wèn)題并修復(fù):```javapublicclassSingleton{privatestaticSingletoninstance=null;publicstaticSingletongetInstance(){if(instance==null){synchronized(Singleton.class){if(instance==null){instance=newSingleton();}}}returninstance;}}```答案:存在指令重排序?qū)е掳氤跏蓟瘜?duì)象問(wèn)題。修復(fù):instance字段加volatile。28.以下MyBatis映射配置有何隱患:```xml<selectid="find"resultType="map">selectfromuserwherenamelike'%${name}%'</select>```答案:使用${}拼接,存在SQL注入風(fēng)險(xiǎn)。修復(fù):改為`concat('%',{name},'%')`或使用<bind>。五、編程題(共30分)29.(10分)用Java實(shí)現(xiàn)一個(gè)固定容量LRU緩存,要求get和put均為O(1)。```javapublicclassLRUCache<K,V>{privatefinalintcapacity;privatefinalMap<K,Node>map;privatefinalNodehead;privatefinalNodetail;privatestaticclassNode{Kkey;Vval;Nodeprev,next;Node(Kk,Vv){key=k;val=v;}}publicLRUCache(intcapacity){this.capacity=capacity;map=newHashMap<>();head=newNode(null,null);tail=newNode(null,null);head.next=tail;tail.prev=head;}publicVget(Kkey){Nodenode=map.get(key);if(node==null)returnnull;moveToHead(node);returnnode.val;}publicvoidput(Kkey,Vval){Nodenode=map.get(key);if(node!=null){node.val=val;moveToHead(node);return;}if(map.size()==capacity){Noderm=removeTail();map.remove(rm.key);}Noden=newNode(key,val);map.put(key,n);addToHead(n);}privatevoidmoveToHead(Nodenode){remove(node);addToHead(node);}privatevoidaddToHead(Nodenode){node.next=head.next;head.next.prev=node;head.next=node;node.prev=head;}privatevoidremove(Nodenode){node.prev.next=node.next;node.next.prev=node.prev;}privateNoderemoveTail(){Nodenode=tail.prev;remove(node);returnnode;}}```30.(10分)實(shí)現(xiàn)一個(gè)高并發(fā)計(jì)數(shù)器,支持100萬(wàn)QPS,要求最終嚴(yán)格準(zhǔn)確。思路:采用LongAdder分段熱點(diǎn),定時(shí)flush到Redis,使用Lua腳本保證原子性。```javapublicclassRedisCounter{privatefinalLongAdder[]adders;privatefinalStringRedisTemplateredis;privatefinalStringkey;privatefinalintmask=15;//16段publicRedisCounter(StringRedisTemplateredis,Stringkey){this.redis=redis;this.key=key;this.adders=newLongAdder[16];for(inti=0;i<16;i++)adders[i]=newLongAdder();scheduleFlush();}publicvoidincr(longdelta){intidx=(int)(Thread.currentThread().getId()&mask);adders[idx].add(delta);}publiclongget(){returnLong.parseLong(Optional.ofNullable(redis.opsForValue().get(key)).orElse("0"));}privatevoidscheduleFlush(){Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(()->{longsum=0;for(LongAddera:adders){sum+=a.sumThenReset();}if(sum==0)return;redis.execute(newDefaultRedisScript<Long>("returnredis.call('incrby',KEYS[1],ARGV[1])",Long.class),Collections.singletonList(key),sum);},0,1,TimeUnit.SECONDS);}}```31.(10分)實(shí)現(xiàn)一個(gè)基于令牌桶的限流器,支持預(yù)熱與突發(fā)流量。```javapublicclassTokenBucket{privatefinallongcapacity;privatefinallongrefillTokens;privatefinallongrefillPeriodMillis;privatedoubletokens;privatelonglastRefillTs;publicTokenBucket(longcapacity,longrefillTokens,longrefillPeriodMillis){this.capacity=capacity;this.refillTokens=refillTokens;this.refillPeriodMillis=refillPeriodMillis;this.tokens=capacity;this.lastRefillTs=System.currentTimeMillis();}publicsynchronizedbooleantryAcquire(inttokens){refill();if(this.tokens<tokens)returnfalse;this.tokens-=tokens;returntrue;}privatevoidrefill(){longnow=System.currentTimeMillis();doubleratio=(double)(now-lastRefillTs)/refillPeriodMillis;longnewTokens=(long)(ratiorefillTokens);if(newTokens>0){tokens=Math.min(capacity,tokens+newTokens);lastRefillTs=now;}}}```六、簡(jiǎn)答題(每題10分,共20分)32.描述一次完整的SpringBean生命周期,并指出擴(kuò)展點(diǎn)。答案:1.實(shí)例化:通過(guò)反射或CGLIB創(chuàng)建BeanWrapper。2.屬性賦值:populateBean,應(yīng)用BeanPostProcessorbefore。3.Aware階段:若實(shí)現(xiàn)Aware接口,調(diào)用setBeanName、setBeanFactory等。4.初始化前:BeanPostProcessorbeforeInitialization。5.初始化:若實(shí)現(xiàn)InitializingBean,調(diào)用afterPropertiesSet;自定義init-method。6.初始化后:BeanPostProcessorafterInitialization,此處完成AOP代理。7.就緒:放入單例池。8.銷毀:DisposableBean、destroy-method。擴(kuò)展點(diǎn):BeanFactoryPostProcessor修改BeanDefinition;BeanPostProcessor干預(yù)實(shí)例;InstantiationAwareBeanPostProcessor可替換實(shí)例;SmartInitializingSingleton在所有單例創(chuàng)建后回調(diào)。33.解釋MySQL的MVCC機(jī)制,并說(shuō)明可重復(fù)讀級(jí)別下如何避免幻讀。答案:MVCC通過(guò)為每行記錄增加隱藏列:trx_id、roll_pointer、row_id實(shí)現(xiàn)。ReadView在事務(wù)首次SELECT時(shí)生成,包含活躍事務(wù)ID列表、最小活躍ID、最大ID??煺兆x:根據(jù)行trx_id與ReadView比較,若小于最小活躍ID可見(jiàn),否則沿undo鏈找舊版本。當(dāng)前讀:select...forupdate使用next-keylock(行鎖+gap鎖),鎖定范圍防止插入,避免幻讀??芍貜?fù)讀下,同一事務(wù)多次快照讀使用同一ReadView,保證一致性;若事務(wù)中執(zhí)行當(dāng)前讀,會(huì)重新生成ReadView,可能讀到新數(shù)據(jù),因此需加鎖避免。七、算法與手寫SQL(共20分)34.(6分)給定一個(gè)未排序數(shù)組,找出其中兩個(gè)數(shù)使和最接近目標(biāo)值,返回乘積。```javapublicintproductClosest(int[]nums,inttarget){Arrays.sort(nums);intl=0,r=nums.length-1,diff=Integer.MAX_VALUE;inta=0,b=0;while(l<r){intsum=nums[l]+nums[r];if(Math.abs(sum-target)<diff){diff=Math.abs(sum-target);a=nums[l];b=nums[r];}if(sum<target)l++;elser--;}returnab;}```35.(6分)手寫SQL:查詢近7天每日新增用戶數(shù),無(wú)數(shù)據(jù)補(bǔ)0。```sqlSELECTd.dt,IFNULL(cnt,0)ASnew_usersFROM(SELECTDATE(DATE_SUB(CURDATE(),INTERVALnDAY))ASdtFROM(SELECT0nUNIONSELECT1UNIONSELECT2UNIONSELECT3UNIONSELECT4UNIONSELECT5UNIONSELECT6)t)dLEFTJOIN(SELECTDATE(create_time)ASdt,COUNT()AScntFROMuserGROUPBYdt)uONd.dt=u.dtORDERBYd.dt;```36.(8分)實(shí)現(xiàn)一個(gè)倒排索引構(gòu)建,輸入為文檔列表,輸出單詞到文檔ID的映射,支持短語(yǔ)查詢。```javapublicclassIn
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026四川大學(xué)華西醫(yī)院醫(yī)院感染管理部項(xiàng)目制科研助理招聘1人考試備考題庫(kù)及答案解析
- 2026年泉州晉江市第五實(shí)驗(yàn)小學(xué)春季教師招聘4人筆試備考題庫(kù)及答案解析
- 2026中國(guó)紡織出版社有限公司招聘考試備考試題及答案解析
- 2026江蘇南京大學(xué)招聘XZ2026-005商學(xué)院保潔員考試備考題庫(kù)及答案解析
- 2026年海南師范大學(xué)招聘?jìng)淇碱}庫(kù)及完整答案詳解1套
- 2026年蘇州工業(yè)園區(qū)翰林幼兒園后勤輔助人員招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 四川南江公用事業(yè)發(fā)展集團(tuán)有限公司2025年面向社會(huì)公開(kāi)招聘5名工作人員的備考題庫(kù)有答案詳解
- 2026年石家莊經(jīng)濟(jì)技術(shù)開(kāi)發(fā)區(qū)開(kāi)發(fā)建設(shè)集團(tuán)有限公司招聘工作人員35人備考題庫(kù)完整參考答案詳解
- 2026年湛江市坡頭區(qū)人力資源和社會(huì)保障局面向社會(huì)公開(kāi)招聘編外工作人員備考題庫(kù)及參考答案詳解一套
- 2026年濰坊峽山醫(yī)院濰坊市福樂(lè)源康復(fù)養(yǎng)老中心護(hù)理人員招聘?jìng)淇碱}庫(kù)及1套完整答案詳解
- 中國(guó)數(shù)聯(lián)物流2026屆校園招聘50人考試題庫(kù)及答案1套
- 2025年大學(xué)網(wǎng)絡(luò)工程(網(wǎng)絡(luò)安全技術(shù))試題及答案
- 建筑公司工資薪酬管理制度(3篇)
- 2025至2030中國(guó)疝氣修補(bǔ)術(shù)行業(yè)調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 中國(guó)餐飲巨頭百勝集團(tuán)深度分析
- 2024-2025學(xué)年福建省廈門市雙十中七年級(jí)(上)期末英語(yǔ)試卷
- 胸鎖乳突肌區(qū)課件
- 2025年物業(yè)管理師《物業(yè)管理實(shí)務(wù)》真題及試題及答案
- 2025年協(xié)警輔警招聘考試題庫(kù)(新)及答案
- 鋼結(jié)構(gòu)施工優(yōu)化策略研究
- 車間輪崗工作總結(jié)
評(píng)論
0/150
提交評(píng)論