2019年面试总结(面试问题+面试经验)

面试题总结:

事务?
事务: 统一执行的一组操作,原子性、一致性

锁?
共享锁(可以一起读取数据库) 独占锁(只能自己读取或者修改)
悲观锁(会创建行级锁,不允许其他用户修改,其他人访问会堵塞) 乐观锁(可以允许多人同时修改,不能保证数据的一致性)
死锁(相互等待对方释放资源,相互希望持有对方资源)

索引?
索引类似 为目录
聚合索引:物理排序,数据由物理顺序存储,一个表包含一个(聚合索引  用key在主键树中查找,找到指定数据)
非聚合索引:逻辑顺序 ,KEY配对 叶节点指针指向数据块   (与聚合索引不同的是  非节点保存的为聚合索引的key,用聚合索引key,在主键索引树中查找,称为回表)

扩展:(引用文章, https://www.cnblogs.com/sujing/p/11110292.html  谢谢您的付出!)

对于二叉树的理解,对于内存页的理解

查询方式 :

 二叉树 

平衡二叉树(根节点保持为 中间值,)

b-tree(每个节点存在多个子节点,Key,value 同时存在)

b+tree(非子节点保存,值,子节点保存Key)

存储方式页:

在某个页内插入新行时,为了不减少数据的移动,通常是插入到当前行的后面或者是已删除行留下来的空间,所以在某一个页内的数据并不是完全有序的,但是为了为了数据访问顺序性,在每个记录中都有一个指向下一条记录的指针,以此构成了一条单向有序链表,

从浏览器发送请求步骤:

请求一个接口的步骤?
1.解析域名DNS解析, 先分析本地,再查找上级DNS 域名服务器查找
2.TCP/IP三次握手
  1.显示客户端发送SYN到服务器
  2.服务器回传SYN/ACK数据包
  3.客户端再发送ACK表示成功
3.发送HTTP请求
  1.建立socket,并发送请求
  2.发送请求头
  3.回传状态 200等
  4.回传头请求
  5.回传正文
  6.关闭连接

 WCF和WEB API我该选择哪个? (去查看通讯协议 soap)
  1、当你想创建一个支持消息、消息队列、双工通信的服务时,你应该选择WCF 
  2、当你想创建一个服务,可以用更快速的传输通道时,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他传输通道不可用的时候也可以支持HTTP。
  3、当你想创建一个基于HTTP的面向资源的服务并且可以使用HTTP的全部特征时(比如URIs、request/response头,缓存,版本控制,多种内容格式),你应该选择Web API
  4、当你想让你的服务用于浏览器、手机、iPhone和平板电脑时,你应该选择Web API

存储过程?
一组Sql操作,
只需要维护一点,不用在程序中多次书写
只打开一次数据库连接,减少消耗性能
减少数据传输

C#连接数据库用的类?
Command
datareader
dataSet
dataAdapter
Connection

WebService?
就是一组接口, 跟手写API类似,相互之间传输信息

面向对象?
封装 继承 多态

委托?
方法变为参数使用,函数指针,事务不是委托

XML?
XML JSON 一种数据格式

Interface接口?
接口可以多继承,类只能单继承
接口只声明,不实现,继承人必须实现,接口是多态的一种实现方式

New 使用?
类实例化
重写 方法

反射?
反射 动态创建对象的实例,可以访问类的方法、属性

拆箱装箱?
拆箱:引用对象转为值对象
装箱:值对象转为引用对象

重载重写?
重载:方法名相同 ,参数不同 ,多态
重写:覆盖原有方法

protected?
类内访问,派生类访问

internal?
程序集内访问

sealed?
密封类,不允许继承
结构体,本身就是密封的
可以防止 其他人重写,重载 方法

值类型?引用类型?
值类型:放在栈中 , 赋值给其他对象时,只会复制一份值, 修改其他对象值是不会修改 当前对象的值, 派生自ValueType
引用类型:放在堆中,栈中存指针 派生自 object

接口认证方式?
Token 认证加密,存储缓存内redis, keyvalue

线程,进程?
一个进程包含多个线程
一个对象的方法只能有一个线程访问
一个请求是一个进程

HashMap?Hashtable?
hasmap 轻量级的hashtable 非线程安全 值可以为null
hashtable 非线程安全 实现 lock(this._table.SyncRoot)之后为线程, 新版本也有安全方法


Collections?
集合类的帮助类,

Const readOnly?
Const: 静态常量,声明即为常量,必须赋值
ReadOnly: 只读变量

Ienumerable?
对象必须继承 Ienumerable 才能便利

冒泡排序?
int [] array= new int [*] ;

  int temp = 0 ;

  for (int i = 0 ; i < array.Length - 1 ;i++)

  {

    for (int j = i + 1 ; j < array.Length ;j++)

    {

      if (array[j] < array[i])

      {

        temp = array[i] ;

        array[i] = array[j] ;

        array[j] = temp ;

      }

    }

  }


Lock?
lock 在递归中是否会锁死,
需要看参数,如果参数为 值类型则不会,是引用则会锁死


Session?
IIS程序池回收机制,会导致丢失, 负载取不到
Cookie?
容易被 修改存储在浏览器

ASP.NET服务器控件的生命周期?
初始化-》加载视图状态处理回发数据-》加载-》发送回发更改通知-》处理回发事件-》预呈现-》保存状态-》呈现-》处置-》卸载

a=10,b=15,在不用第三方变量的前提下,把a,b的值互换?
a=a+b;b=a-b;a=a-b;


a=10,b=15,在不用第三方变量的前提下需要代码最短呢?
1) a^=b^(b^=a^b); // 13个字节
2) a=b+(b=a)*0; // 11个字节

猜你喜欢

转载自www.cnblogs.com/nnqwbc/p/11387081.html