二狗的面試題整理


  閑來無事,整理一下最近參加面試遇到的一些優點意思的面試題。

1. finally與return相關的問題

  大家直接看代碼吧

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里的語句還會執行嘛?答案是肯定的。

 原理可以參考這篇博文,傳送門

 結論是finally中的代碼始終都會執行。

2.  4G的內存怎么讀取大小為8G的文件?

  大致思路是分塊讀,每一部分的大小都小於4g,然后利用yield進行返回。另外,在Linux系統下,還可以使用split方法將大文件拆成小文件去讀。

3.  怎樣判斷一個鏈表是否有環?

  最經典的方法就是快慢指針了。思路大概是這樣:從起點開始,分別設置兩個指針,滿指針每次的步長為n,快指針的步長為2n。這樣,如果確實有環存在,那么必然存在快慢指針再次相遇的時候。如果沒有環,最終結果是快慢指針都的next節點都為空。這樣就可以分辨出是否包含環了。

  

  去面試一下還是有些好處的。平常工作上雖然都能處理了,但是一是眼界被限制住了,二是很難接觸到新的東西,甚至很少會去想一些這樣有意思的問題。同志仍需努力,加油吧.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM