閒來無事,整理一下最近參加面試遇到的一些優勢意思的面試題。html
1. finally與return相關的問題面試
你們直接看代碼吧spa
using System; namespace TestReturn { public class Program { public static void Main(string[] args) { Console.WriteLine("Hello World!"); TestReturn(); Console.ReadLine(); TestReturn2(); Console.ReadLine(); } private static void TestReturn() { Console.WriteLine("1"); try { Console.WriteLine("2"); return; } catch { Console.WriteLine("3"); } finally { Console.WriteLine("4"); } Console.WriteLine("5"); } private static void TestReturn2() { Console.WriteLine("O1"); try { Console.WriteLine("O2"); throw new Exception(); } catch { Console.WriteLine("O3"); return; } finally { Console.WriteLine("O4"); } Console.WriteLine("O5"); } } }
try語句塊內執行return語句後,finally裏的語句還會執行嘛?答案是確定的。指針
原理能夠參考這篇博文,傳送門。code
結論是finally中的代碼始終都會執行。htm
2. 4G的內存怎麼讀取大小爲8G的文件?blog
大體思路是分塊讀,每一部分的大小都小於4g,而後利用yield進行返回。另外,在Linux系統下,還能夠使用split方法將大文件拆成小文件去讀。內存
3. 怎樣判斷一個鏈表是否有環?get
最經典的方法就是快慢指針了。思路大概是這樣:從起點開始,分別設置兩個指針,滿指針每次的步長爲n,快指針的步長爲2n。這樣,若是確實有環存在,那麼必然存在快慢指針再次相遇的時候。若是沒有環,最終結果是快慢指針都的next節點都爲空。這樣就能夠分辨出是否包含環了。string
去面試一下仍是有些好處的。日常工做上雖然都能處理了,可是一是眼界被限制住了,二是很難接觸到新的東西,甚至不多會去想一些這樣有意思的問題。同志仍需努力,加油吧.