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