zoukankan      html  css  js  c++  java
  • .net面试宝典

    目前,关于java的面试宝典,网上可以说是多的数不胜数,并且内容各不相同,但是关于.net的,找来找去却都是差不多的,所以,这里我汇总一下我最近的面试所问到的问题,并且会继续更新。

    基础:
       1、const与static readonly的区别
                参考:const的值是在编译期间确定的,因此只能在声明时通过常量表达式指定其值,而static readonly是在运行时计算出其值的,所以还可以通过静态构造函数来赋值。理论上static readonly不可已更改,但是可以通过别的方法,例如static readonly List<int> list,可以通过list.Add()的方法修改。
       
       2、webapi和webservice的区别
           
      参考
               
    webapi用的是http协议,无状态,可以构建restful,可以拥有很多种传输格式;
                 WebService是基于Soap协议,soap在http协议的基础上,一个基于XML的协议。
      3、Redis数据类型及用途
             参考:
                 string:计数、点赞、token;
                 Hash:存储一个用户信息对象数据。
                 List:最新消息排行榜、消息队列;
                 Set:利用唯一性,可以统计访问网站的所有独立IP;
                 (sorted set:有序集合):例如存储全班同学的成绩,其集合value可以是同学的学号,而score就可以是成绩。(2)排行榜应用,根据得分列出topN的用户等。
      3、RabbitMQ五种工作模式
            参考:
                 简单模式;
                 work 模式(一个生产者对应多个消费者,但是一条消息只能有一个消费者获得消息!!!);
                 发布/订阅模式(fanout)(一个消费者将消息首先发送到交换器,交换器绑定到多个队列,然后被监听该队列的消费者所接收并消费。);
                 路由模式(生产者将消息发送到direct交换器,在绑定队列和交换器的时候有一个路由key,生产者发送的消息会指定一个路由key,那么消息只会发送到相应key相同的队列,接着监听该队列的消费者消费消息。);
                主题模式(上面的路由模式是根据路由key进行完整的匹配(完全相等才发送消息),这里的通配符模式通俗的来讲就是模糊匹配。)
       4、如何保证线程安全
           参考:使用lock或者线程安全集合如ConcurrentDictionary、ConcurrentBag等
      5、Ioc容器的理解:
           参考:接口和实现分离,IoC容器可以解决类之间的依赖关系,当你需要获得一个类A的实例时,而这个类又需要调用其他两个接口/类(B、C),IoC容器可以根据配置自动创建B和C实例,然后再用B和C的实例创建A。相比较以前用工厂模式创建实例,IoC容器更加简洁方便。
      6、数组与链表的区别
          参考:
                 数组:数组是将元素在内存中连续存放,由于每个元素占用内存 相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其 中。同养的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。

                链表:
    链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后 一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元 素中的指针就可以了。如果应用需要经常插入和删除元素你就需要用链表数据结构了。
          数组静态分配内存,链表动态分配内存;
          数组在内存中连续,链表不连续;
          数组元素在栈区,链表元素在堆区;
          数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
          数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。
       7、在不使用事务的情况下去保证事务的一致性
           参考:mq的消息一致性
       8、数组的快速排序
            参考:算法,例如冒泡排序等
       9、如何保证webapi的高并发性
            参考:api限流,提升api内部代码的效率,数据库性能等
    10、Win64位程序如何调用Win32位的dll
            参考:百度
     11、如何启动线程,如何等待所有线程完成:
           参考:Task启动,可以用Task.Wait()或者Task.WailAll()等待
    12、有没有Redis实际用过,什么场景使用
          参考:变化比较少的数据使用,例如菜单目录,人员信息等
    13、使用过哪些前端框架
          参考:layui、vue、echart
    14、了解过哪些开源技术或者框架
    15、如何保证rabblimq消息队列的消息的完整性
    16、谈谈rabbitmq的手动应答和自动应答


    数据库:
         1、 over函数
              参考:Over函数不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用 。
        2、事务的四种级别
            参考:
    未提交读(Read uncommitted)提交读(Read committed)可重复读(Repeatable read)可串行化(Serializable),其中Read committed是sql server的默认级别
        3、聚集索引和非聚集索引的区别
              参考:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个,这个跟没问题没差别,一般人都知道。
                        聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续,这个大家也都知道。参考 https://www.cnblogs.com/qwg123/p/4572253.html
        4、分库分表有木有经验
             参考:我的回答是模拟过主从备份,没有分表经验,然后讲了下主从备份的操作,以及带来的问题。
        5、当一个表的数据超过一千万时有什么影响,怎么解决
             参考:百度
        6、两个线程同时插入数据库,id自增,第一个异常了,第二个插入的id是多少
             参考:自己百度

  • 相关阅读:
    字符串类题
    计算器(栈、字符串)
    排序与检索,UVa 10474,(大理石在哪里)
    2019第十届蓝桥杯Java题
    暴力求解法
    图的遍历
    栈 队列与优先队列
    刷题小知识总结点
    字符串题单
    string
  • 原文地址:https://www.cnblogs.com/MrHanBlog/p/14854557.html
Copyright © 2011-2022 走看看