闲来无事,整理一下最近参加面试遇到的一些优势意思的面试题。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
去面试一下仍是有些好处的。日常工做上虽然都能处理了,可是一是眼界被限制住了,二是很难接触到新的东西,甚至不多会去想一些这样有意思的问题。同志仍需努力,加油吧.