Skip to content

面试记录

约 1453 字大约 5 分钟

NET

2023-03-15

抽象类与接口

- 接口用于规范 抽象用于共性
- 接口一般用于设计 抽象用于重构
- 接口可多继承   抽象类是类只能单继承
- 接口不能实例化、不包含方法的实现
- 接口中只能申明方法属性事件索引器 抽象类有方法实现,非静态变量

十万级数据的并发你怎么处理?

- 读写分离、分库分表、nosql? 具体还需要更加详细的实践 kafka

设计模式有哪几种 分别应用于什么场景

  • 单例模式 Singleton Pattern 如其名:单个实例的模式 一般用于只需要单个实例的情况,比如读取文件 连接对象等。分恶汉懒汉模式 实现方式: 私有构造,封装对象暴露。 恶汉模式:类创建时创建对象, 懒汉模式:调用时创建 - 工厂方法模式 Factory Method Pattern 简单工厂模式 工厂创建对象,不再依赖 缺点无法动态增加新的对象 违背开闭原则 - 抽象工厂模式 Abstract Factory Pattern 解决了简单工厂的开闭原则 - 原型模式 Prototype Pattern - 建造者模式 Builder Pattern

结构型有7个:

  • 适配器模式 Adapter Pattern
  • 桥接模式 Bridge Pattern
  • 组合模式 Composite Pattern
  • 装饰模式 Decorator Pattern
  • 外观模式 Façade Pattern
  • 享元模式 Flyweight Pattern
  • 代理模式 Proxy Pattern

行为型有11个:

  • 职责链模式 Chain of Responsibility Pattern
  • 命令模式 Command Pattern
  • 解释器模式 Interpreter Pattern
  • 迭代器模式 Iterator Pattern
  • 中介者模式 Mediator Pattern
  • 备忘录模式 Memento Pattern
  • 观察者模式 Observer Pattern
  • 状态模式 State Pattern
  • 策略模式 Strategy Pattern
  • 模板方法模式 Template Method Pattern
  • 访问者模式 Visitor Pattern

sql | linq 取末级/最后一级的节点

  • Linq

    	 List<Entity> list = new List<Entity> {
                 new Entity(){ Id = 1, Name="根",Pid = 0 },
                 new Entity(){ Id = 2, Name="木",Pid = 1 },
                 new Entity(){ Id = 3, Name="铁",Pid = 1 },
                 new Entity(){ Id = 4, Name="金",Pid = 1 },
                 new Entity(){ Id = 5, Name="木剑",Pid = 2 },
                 new Entity(){ Id = 6, Name="木棍",Pid = 2 },
                 new Entity(){ Id = 7, Name="铁棒",Pid = 3 },
                 new Entity(){ Id = 8, Name="铁枪",Pid = 3 }
             };
    
            var l = from t in list
                    let pp = (from p in list.Select(s => s.Pid) select p)
                    where !pp.Contains(t.Id)
                    select t;
  • sql

    	SELECT * FROM tree where id not in( SELECT Pid from tree)

迷宫

HTTP状态码: 1xx(临时响应)、2xx(成功)、3xx(已重定向)、4xx(请求错误)以及5xx(服务器错误)

验证码

jwt

登录验证 描述登录接口的流程 token

正则符号表示

1、为什么一定要设一个主键?2、你们主键是用自增还是UUID?3、自增主机用完了怎么办?4、主键为什么不推荐有业务含义?5、货币字段用什么类型??6、时间字段用什么类型?7、为什么不直接存储图片、音频、视频等大容量内容?8、表中有大字段X(例如:text类型),且字段X不会经常更新,以读为主,那么是拆成子表好?还是放一起好?9、字段为什么要定义为NOT NULL?10、where执行顺序是怎样的11、应该在这些列上创建索引?12、mysql联合索引?13、什么是最左前缀原则?14、什么情况下应不建或少建索引?15、MySQL数据库cpu飙升到100%的话他怎么处理?16、什么时候适合创建索引?17、数据库开启慢查询18、MYSQL的主从延迟怎么解决。19、mysql数据库监控指标之吞吐量

精耕

MVC 生命周期(session cookie viewbag viewdata)、4大异常处理机制(过滤机制)
数据库索引
IIS与加载设置属性
消息队列是什么机制

面试题

  • 三层结构

    • 数据访问层
    • 业务逻辑层
    • UI 显示层 优点:条理清晰分工明确方便团队合作开发,易于替换扩展 缺点:增加开发成本
  • ASP.NET 传值方式

    • 1.URL 传值 QueryString
    • 2.Session 简单,但由于存储在服务器内存,容易丢失
    • 3.application 作用于全局 对所有用户生效一般存储设置
    • 4.cookie 简单,但是不安全 存放于客户端需要配合 request 使用
    • 5.server.transfer 跳转,浏览器地址不变
    • 6.使用数据库,安全但是麻烦
  • ASP.NET 生命周期

    • page_init、load viewstate、page_load、handle_contorl、page_prerender、page_render、unload\dispose
  • ADO.NET 常用对象

    • Conncetion、command、dataadapter、dataset、datereader
  • 详述.NET 里 class 和 struct 的异同

    • 类 引用类型可以被继承和被继承可以继承接口 有默认的构造函数 可以被实例
    • 结构 值类型 只能继承接口 不能被继承 没有默认的构造函数 不可实例化
  • 解释 virtual、sealed、override 和 abstract 的区别

    • virtual 申明虚方法的关键字,说明该方法可以被重写
    • sealed 说明该类不可被继承
    • override 重写基类的方法
    • abstract 申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。
  • C# ref 与 out 区别:

    • 1、使用 ref 型参数时,传入的参数必须先被初始化。对 out 而言,必须在方法中对其完成初始化。
    • 2、使用 ref 和 out 时,在方法的参数和执行方法时,都要加 Ref 或 Out 关键字。以满足匹配。
    • 3、out 适合用在需要 retrun 多个返回值的地方,而 ref 则用在需要被调用的方法修改调用者的引用的时候。
  • 简述 private、 protected、 public、 internal 修饰符的访问权限。

    • private : 私有成员, 在类的内部才可以访问。
    • protected : 保护成员,该类内部和继承类中可以访问。
    • public : 公共成员,完全公开,没有访问限制。
    • internal: 在同一命名空间内可以访问。