zoukankan      html  css  js  c++  java
  • 一次失败的面试

    做任何毫不费力的事情,都是在浪费时间,忘记这是哪本书里看到的了,到了30岁的年纪,越来越有感触,记录失败的面试,顺便祭奠一下被我挥霍掉的这5年。

    前提:

    公司从事的行业就不透露了,主要从事一些内部项目,如流程管理,原素材管理等。项目很多,但都不是很大,工作压力不是很大,只要多了解业务,思路清晰,很多工作都是轻轻松松的完成,即使偷懒,也被认为是骨干,并做到了pm的职位,还为自己可以号称全栈而沾沾自喜(确实全栈,甚至包括光纤部署,存储网络等都是自己来干)。而富裕的时间就是给互联网贡献流量了。突然,一觉醒来,发现自己已经三十岁了,有一个需要富养的千金,决定不能这样在荒废下去,不能在做这种轻松的小项目。于是开始了求职之路。

    求职过程:

    到某做在线教育的互联网公司面试工程师的职位。做了一份笔试题后(很多错误),和hr聊了聊,然后,就没有然后了。

    面试题内容:

    既然决定了,就要总结一下,回家后凭借记忆力把面试题大概的重写了一下,好多题目可能和原题不一致,毕竟是面试,不是参加最强大脑:

    1 public,protected,private,internal,protected internal 这些限定符中,哪些可以被类使用,那些可以被方法是用

    说实话,第一题就蒙了。这个还真不是很清楚!直接msdn的答案:

    访问修饰符

    说明

    public

    公有访问。不受任何限制。

    private

    私有访问。只限于本类成员访问,子类,实例都不能访问。

    protected

    保护访问。只限于本类和子类访问,实例不能访问。

    internal

    内部访问。只限于本项目内访问,其他不能访问。

    protected internal

    内部保护访问。只限于本项目或是子类访问,其他不能访问

    C# 方法默认访问级别: private 

    C# 类默认访问级别: internal 

    1 派生类的可访问性不能高于其基类型。换句话说,不能有从内部类A 派生的公共类B。如果允许这种情况,将会使A 成为公共类,因为A 的所有受保护的成员或内部成员都可以从派生类访问。

    2 成员的可访问性决不能高于其包含类型的可访问性。

    3 可以使用五种访问类型中的任何一种来声明类成员(包括嵌套的类和结构)。

    即这些限定符类和方法均可以使用,但方法的可访问性不能高于其包含类的可访问性。

    2 overload和override的区别

    白送分的题:

    1 override发生在继承中,两个函数的函数特征相同

    2 overload的函数名虽然相同,但函数特征不同。

    注:函数特征包括函数名,参数类型和参数个数。

    3 String和StringBuilder 的区别

    白送分题

    1 string为System.String类 StringBuilder为System.Text.StringBuilder类

    2 string不可变,修改后会创建一个新的string;StringBuilder 为可变的,当对变化比较频繁的时候,StringBuilder效率会高

    4 以下程序共发生了几次装箱操作,有什么可以优化的方式

    int v = 2;
    Console.WriteLine("v={0},v={1},v={2}", v,v,v);
    Console.ReadKey();

    较简单

    三次 优化方式为

    int v = 2;
    Console.WriteLine("v={0},v={0},v={0}", v);
    Console.ReadKey();
    

      

    5 程序阅读题

    写出下列程序输出结果:

    static void Main(string[] args)
    {
    string test = "hello";
    test = test.ToUpper();
    test = test.Insert(0, " WORLD");
    Console.WriteLine(test);
    Console.ReadKey();
    }

    较简单 _WORLDHELLO(_表示空格)

    6 程序阅读题

    写出下列程序输出结果:

    class A
    {
        public A()
        {
           OutputText();
        }
        public virtual void OutputText()
        { 
          Console.WriteLine("Hello world");
         }
    }
    class B:A
    {
          int x = 0;
          int y;
          public B()
          { 
              y = 1;
          } 
          public override void OutputText() 
          { 
             Console.WriteLine("x+y={0}", x + y);
          }
    }  
    

      

    当时毫不犹豫的就写了 无输出!

    实际上 子类会默认调用父类的无参数构造函数!!!

    7 写程序题

    具体题干忘记了 意思就是写出2+3+…55的值

    典型的考递归的题

    private static int MyAdd(int x,int y)
    {
         int sum=y;
         if (x <= 55)
         {
               Console.Write("+{0}", x);
               sum += x;
               return MyAdd(y, x + y);
          }
         else
          {
               Console.Write("={0}", sum);
               return sum;
           }
    }
    

      

    8 写一个单例模式样例

    这个题写了一个最简单的:

    public sealed class Single
    {
            private static Single _instance = null;
            private Single ()
            {
            }
            public static Single Instance
            {
                get { return _instance ?? (_instance = new Singleton()); }
            }
    }
    

      

    9数据库题 写出SQL的几种连接方式

    较简单

    4种 内连接(左右) 外连接(左右)

    10 数据库题 写一条SQL语句,查询主单表下的name字段是否有重复及重复次数

    这个 简单理解为 应该是group by?

    select count(name),name from 表1 group by name;
    

      

    11 事物题 什么是事物的ACID属性

    平时做的项目 确实很少用到事物,所以 事物题全军覆灭。

    1. 原子性(atomic),事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行

    2. 一致性(consistent),事务在完成时,必须使所有的数据都保持一致状态。

    3. 隔离性(insulation),由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。

    4. 持久性(Duration),事务完成之后,它对于系统的影响是永久性的。

     

    12 由低到高写出事物的隔离级别

    1 读未提交(Read uncommitted): 可以读取其他事务未提交的数据
    2 读已提交(Read committed):只能读取其他事务已经提交的数据(有进行修改的)
    3 可重复读(Repeatable read):保证使用该隔离级别的事务,在读取数据时的数据保持一致,不会被别的事务修改、删除数据(因为别的事务如果有修改、删除操作会被阻塞)
    4 可串行化(Serializable):使用该隔离级别的事务用到的表将全部锁定,其他事务不可以进行添加、修改、删除

    13 什么事幻影数据

    幻影数据即不可重复读数据,指指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。具体有三种情况:

    1 事务T1读取某一数据后,事务T2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。

    2 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神密地消失了。

    3 事务T1按一定条件从数据库中读取某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录。 

    14 js题:

    var obj=(function(){
             var num=2;
             var output=function()
             {
                       var num;
                       alert(num); //1
                       num=2
                       alert(num);//2
             }
             return {output:output};
    })();
    obj.output(); 
    

      

     

    求两个alert的值

    1 undefined

     

    2 2

    这道题,不知道为啥我鬼使神差的1写了null!

         

    15 js题  setTimeout与setinterval区别

    setTimeout() : 用于在指定的毫秒数后调用函数或计算表达式;

    setInterval() : 按照指定的周期(以毫秒计)来调用函数或计算表达式. 会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭;

    摘自js手册

    简单说 setTime只执行了一个句柄,而setInterval循环执行。

    写在后边:

    常理来说,应该有16道题吧,但能想到的只有15道了

    不管怎么说,这次面试铩羽而归。只能巩固现在,期待未来了

  • 相关阅读:
    echart图表--雷达图表的动态数据max
    访问github个人博客时*.github.io 拒绝了我们的连接请求,错误码403
    js数组对象去重
    关于vuex的demo
    原生js实现 正方体旋转
    实现分页加载,加载更多(按钮类型),滚动加载的方式
    this指向
    记录三段式布局
    vue 动态路由 和 路由模式
    vue cli 配置反向代理
  • 原文地址:https://www.cnblogs.com/jiangchao226/p/4351382.html
Copyright © 2011-2022 走看看