摘要:最寒冷,面試跳槽不能等馬上就月份了,所謂的金三銀四招聘季。在中有兩種模式,分別是線程池和信號量,說到這里大家明白了吧,信號量的作用。感興趣的同學(xué)可以去了解下,講了線程,線程池,鎖,,等內(nèi)容。
2019最寒冷,面試跳槽不能等
馬上就3月份了,所謂的金三銀四招聘季。2019年也許是互聯(lián)網(wǎng)最冷清的一年,很多知名的大型互聯(lián)網(wǎng)公司都裁員過冬。當然也有一些公司還在持續(xù)招人的,比如阿里就宣稱不裁員,反而要增加更多的就業(yè)機會。
面試大公司的職位,基礎(chǔ)顯得很重要,在并發(fā)編程這塊問的自然也比較多。對于一個Java程序員而言,能否熟練掌握并發(fā)編程是判斷他優(yōu)秀與否的重要標準之一。因為并發(fā)編程是Java語言中最為晦澀的知識點,它涉及操作系統(tǒng)、內(nèi)存、CPU、編程語言等多方面的基礎(chǔ)能力,更為考驗一個程序員的內(nèi)功。
今天我們就來聊聊Java中的Semaphore(信號量)在面試過程中會有哪些問題,以及如何回答。
問題一:什么是信號量?信號量就相當于一個計數(shù)器,通常用來限制線程的數(shù)量。每個線程操作前會先獲取一個許可證,邏輯處理完成之后就歸還這個許可證。
就好比我們?nèi)ゾW(wǎng)吧上網(wǎng),信號量初始化的大小就好比網(wǎng)吧中所有的電腦。當有人交費開機之后,可用電腦的數(shù)量就少了1臺。依次類推,當有人下機之后可用的電腦數(shù)量又多了。當機器被用完之后新來的客人就只能等待前面的人下機,這就是歸還許可證。
問題二:信號量的應(yīng)用場景?信號量的核心功能就是用來對資源做一定的限制,防止出現(xiàn)崩塌現(xiàn)象。最適用的應(yīng)用場景那就是限流,通過限流來保護對應(yīng)的資源。
在Spring Cloud中我們會用Hystrix來保護服務(wù),進行熔斷降級。在Hystrix中有兩種模式,分別是線程池和信號量,說到這里大家明白了吧,信號量的作用。
在限流層面,最簡單的實現(xiàn)可以用信號量來實現(xiàn)本地限流操作,集群限流必須得依賴第三方中間件,比如Redis。
問題三:你有在項目中使用過信號量嗎?這個問題那就得根據(jù)你的實際情況來說明了,如果確實沒用用過,你可以稍微構(gòu)思一下,在哪些業(yè)務(wù)場景下可以使用,然后封裝下,對吧,搞Java的怎么能不會封裝呢,然后侃侃而談,我用過啊,我在那個啥....用過啊....為了滿足xxx的需求啊。。。
比如:在我們的爬蟲系統(tǒng)中,都會通過多線程的方式去爬取數(shù)據(jù),而有些小型網(wǎng)站,并發(fā)能力不是特別強,線程數(shù)一上去就很慢,然后服務(wù)出現(xiàn)504,502最后爬取不了,這個時候就需要對并發(fā)抓取量做一些限制了,這個時候就可以用信號量來進行限制。
還有些并發(fā)量強的網(wǎng)站,能抗住很多的請求,但是人家的反爬取策略做的好啊,請求數(shù)量稍微多一點就能識別你是機器,給你封了,這也是需要做一些限制。
剩下的就靠你自己吹牛啦。。。
public class SemaphoreDemo { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(10); Semaphore semaphore = new Semaphore(2); for (;;) { executorService.execute(() -> { try { semaphore.acquire(); System.out.println("抓取數(shù)據(jù)邏輯"); } catch (Exception e) { e.printStackTrace(); } finally { semaphore.release(); } }); } } }總結(jié)推薦
我這邊只是列舉了簡單的三個問題,實際面試中可能問的更深入,在并發(fā)這塊我也不是什么高手,我也是一直在學(xué)習(xí)的過程中,其實在2年之前吧,我自己也錄制過一套并發(fā)的課程,在我的網(wǎng)站猿天地上面。感興趣的同學(xué)可以去了解下,講了線程,線程池,鎖,CountDownLatch,Semaphore等內(nèi)容。
歡迎加入我的知識星球,一起交流技術(shù),免費學(xué)習(xí)猿天地的課程(http://cxytiandi.com/course)文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/73508.html
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實現(xiàn)故障恢復(fù)自動化詳解哨兵技術(shù)查漏補缺最易錯過的技術(shù)要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實現(xiàn)故障恢復(fù)自動化詳解哨兵技術(shù)查漏補缺最易錯過的技術(shù)要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...
閱讀 3881·2021-11-24 11:14
閱讀 3321·2021-11-22 13:53
閱讀 3883·2021-11-11 16:54
閱讀 1546·2021-10-13 09:49
閱讀 1211·2021-10-08 10:05
閱讀 3392·2021-09-22 15:57
閱讀 1754·2021-08-16 11:01
閱讀 965·2019-08-30 15:55