字節(jié)跳動(dòng)大規(guī)模裁員。。。
最近,正好又趕上了金九銀十,這次真的是不想跳槽也得跳槽了…,看看這位粉絲的面試經(jīng)歷和準(zhǔn)備情況,被問到這樣一個(gè)題目....
前兩天去某廠面試,問了我一道什么哲學(xué)家就餐問題。
真的,太難搞了,而且還挺經(jīng)典的!反正我是不會(huì),我給你們分享一下,如果你近期也打算跳槽,或者想漲漲知識(shí)的,我建議你好好看看這個(gè)!
假設(shè)有五位哲學(xué)家圍坐在一張圓形餐桌旁,做以下兩件事情之一:吃飯,或者思考。
吃東西的時(shí)候,他們就停止思考,思考的時(shí)候也停止吃東西。餐桌中間有一大碗意大利面,每兩個(gè)哲學(xué)家之間有一只餐叉。
不過哲學(xué)家從來不交談,這就很危險(xiǎn),可能產(chǎn)生死鎖,每個(gè)哲學(xué)家都拿著左手的餐叉,永遠(yuǎn)都在等右邊的餐叉(或者相反)。
即使沒有死鎖,也有可能發(fā)生資源耗盡。例如,假設(shè)規(guī)定當(dāng)哲學(xué)家等待另一只餐叉超過五分鐘后就放下自己手里的那一只餐叉,并且再等五分鐘后進(jìn)行下一次嘗試。
這個(gè)策略消除了死鎖,但仍然有可能發(fā)生活鎖。
如果五位哲學(xué)家在完全相同的時(shí)刻進(jìn)入餐廳,并同時(shí)拿起左邊的餐叉,那么這些哲學(xué)家就會(huì)等待五分鐘,同時(shí)放下手中的餐叉,再等五分鐘,又同時(shí)拿起這些餐叉。
在實(shí)際的計(jì)算機(jī)問題中,缺乏餐叉可以類比為缺乏共享資源。
一種常用的計(jì)算機(jī)技術(shù)是資源加鎖,用來保證在某個(gè)時(shí)刻,資源只能被一個(gè)程序或一段代碼訪問。
當(dāng)一個(gè)程序想要使用的資源已經(jīng)被另一個(gè)程序鎖定,它就等待資源解鎖。當(dāng)多個(gè)程序涉及到加鎖的資源時(shí),在某些情況下就有可能發(fā)生死鎖。
例如,某個(gè)程序需要訪問兩個(gè)文件,當(dāng)兩個(gè)這樣的程序各鎖了一個(gè)文件,那它們都在等待對(duì)方解鎖另一個(gè)文件,而這永遠(yuǎn)不會(huì)發(fā)生。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。