面试必问的问题集

  • EF 中DBContext是线程安全的吗?

       不是线程安全的,因为在一个同一时刻,一个上下文只能执行一个异步方法实体状态改变,对应一个上下文,不能跨上下文修改实体状态,也不能跨上下文应用实体状态
       
      什么是线程安全呢?
      线程安全,指某个函数、函数库在多线程环境中被调用时,能够正确地处理各个线程的局部变量,使程序功能正确完成
    
  • EF怎么做查询优化

      1.  适时的使用AsNoTracking()进行数据查询
      2.  使用Any()判断值是否存在
      3.  最后一步才使用ToList
      4.  建立适当的索引
      5.  优化SQL语句
    
  • 索引的使用,索引未命中怎么办?在什么情况下会未命中

       哪些情况需要建立索引?
       1. 主键自动建立唯一索引,查询与其它表关联的字段,外键关系建立索引
       2. 有大量重复值且经常有范围查询和排序、分组的列,或者经常频繁访问的列,或者返回大量数据记录时考虑建立聚集索引
       3. 精确匹配的查询搜索条件(where)中经常使用的列需要建立索引
    
  • DotNet Core中有哪几种注入方式

      Sington     每次都获取同一个实例
      Scope       每次请求,都获取一个新的实例。同一个请求获取多次会得到相同的实例
      AddTransient    每次请求,都获取一个新的实例。即使同一个请求获取多次也会是不同的实例
    
  • 深Copy和浅Copy的区别

       浅拷贝:只对值类型(或string)类型分配新的内存地址。引用类型仍指向原来的地址。所以引用类型浅拷贝后,对拷贝对象操作仍会影响原始对象。
       深拷贝:拷贝到了指针指向的内存块的值,拥有新的内存地址
    
  • 中间件和Filter的区别

      Asp.net Core五类过滤器:
      Authorization Filter、Resource Filter、Acton Filter、Exception Filter、Result Filter。(授权、资源、操作、异常、结果)优先级逐次递减。
      过滤器更贴近业务,它关注与应用程序本身;而中间件是一个可以处理HTTP请求或响应的软件管道。
    
  • Task和Thread的区别

      Thread 类主要用于实现线程的创建以及执行。Task 类表示以异步方式执行的单个操作。
      
      1.Task 是基于 Thread 的,是比较高层级的封装,Task 最终还是需要 Thread 来执行
      2.Task 默认使用后台线程执行,Thread 默认使用前台线程
      3.Task 可以有返回值,Thread 没有返回值
      4.Task 可取消任务执行,Thread 不行
      5.Thread 在父方法上获取不到异常,而 Task 可以。        
    
  • Lock的使用

  • Dictionary和ConcurrentDictionary的区别

      ConcurrentDictionary是线程安全的集合,可以由多个线程同时并发读写Key-value
      Dictionary不是线程安全的
    
  • Https和Http的区别

      http 明文传输,数据都是未加密的安全性较差。https(ssl+http) 数据传输过程是加密的,安全性较好。
      https需要证书。http 页面响应速度比 https 快
      http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。(http工作在TCP 协议,默认80端口)
    
  • TCP和UDP的区别

      TCP是面向连接的,要求系统资源比较多,有三次握手确认机制,可靠稳定。比较安全
      UDP是无状态连接的,程序结构较简单,要求资源较少,所以传输数据比较快,但容易丢包
    
  • 使用过哪些设计模式?普通工厂和抽象工厂有什么区别

      工厂模式;单例模式
      简单工厂:是由一个工厂对象创建产品实例,一般是使用静态方法。
      抽象工厂:将公共的方法抽象出来,想创建什么样的产品,只需要实现这些接口就可以得到不同的产品。
原文地址:https://www.cnblogs.com/opts/p/15230904.html