• 二狗的面试题整理


      闲来无事,整理一下最近参加面试遇到的一些优点意思的面试题。

    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节点都为空。这样就可以分辨出是否包含环了。

      

      去面试一下还是有些好处的。平常工作上虽然都能处理了,但是一是眼界被限制住了,二是很难接触到新的东西,甚至很少会去想一些这样有意思的问题。同志仍需努力,加油吧.

  • 相关阅读:
    Android中传感器的基本概念
    Android攻城狮 multi-touch多点触摸
    Android攻城狮SurfaceView
    Android攻城狮Tab类型
    Android攻城狮使用SubMenu创建子菜单
    Android攻城狮认识ContextMenu
    Android攻城狮OptionsMenu
    Android攻城狮Notification实现状态通知栏
    虹软人脸识别SDK(java+linux/window)
    人脸识别ArcFace C#DEMO 开发应用全过程
  • 原文地址:https://www.cnblogs.com/dogtwo0214/p/11781533.html
Copyright © 2020-2023  润新知