后端面经总结(一)

算法

  • 快排
public class Main{
	
	public int part(int[] nums,int l,int r){
		int tmp = nums[l];
		while(l<r){
			while(l<r &&nums[r] >= tmp)r--;
			nums[l] = nums[r];
			while(l<r && nums[l] <= tmp)l++;
			nums[r] = nums[l];
		}
		nums[l] = tmp;
		return l;
	}

	public void QuickSort(int[] nums,int l,int r){
		if(l<r){
			int tmp = part(nums,l,r);
			QuickSort(nums,l,tmp);
			QuickSort(nums,tmp+1,r);
		}	
	}
}
  • 重载运算符:

java不支持重载运算符;
C++可以重载运算符。

数据库

mysql的两种搜索引擎

  • InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件 本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需要 两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他 索引也都会很大。
  • MyISAM是非聚集索引,也是使用B+Tree作为索引结构,索引和数据文件是分离的,索引保存的是数据 文件的指针。主键索引和辅助索引是独立的

操作系统

线程通信:

  1. 多个线程监听同一个 v o l a t i l e volatile volatile关键字。
  2. 等待、通知机制(Object.wait/Object.notify)
  3. join方式
  4. threadLocal

进程的socket套接字通信具体是怎么样的

在这里插入图片描述
在这里插入图片描述

浏览器输入URL到返回页面过程

  1. 域名解析(DNS解析IP)
  2. TCP连接,浏览器给服务器发送一个HTTP请求
  3. 服务器返回HTTP响应
  4. 浏览器渲染HTML
  5. 断开连接

面向对象

特征

  1. 封装
  2. 继承
  3. 多态

other

  1. new的过程:

    1. 首先常量池中找到类的带路径全名,然后检查对应的字节码是否已被加载、解析、验证、初始化,如果没有,先加载类。
    1. 虚拟机为对象分配内存。
      + 指针碰撞
      + 空闲列表
    2. 设置对象头信息:元数据信息、哈希码、GC分代年龄。
    3. 调用对象 i n i t init init方法,根据传入的属性值给对象赋值。
    4. 在线程中新建对象引用,并指向堆中刚刚新建对象实例。
  2. hashMap底层实现(顺序表+链表+红黑树)TreeMap也用了红黑树

  3. 父类子类执行顺序

  4. String/StringBuilder/StringBuffer

  5. synchronized

  6. String不可变原因

  7. final关键字

  8. 异常

  9. CAS

  10. 多线程插入数据库

  11. MyBites

  12. sql优化

状态码

1 信息,服务器收到请求,需要请求者继续执行操作
  • 100:继续,客户端应该继续请求
  • 101:切换协议,服务器根据客户端的请求切换协议,只能切换到更高级的协议
2 成功,操作被成功接收并处理
  • 200:请求成功
  • 201:已创建,成功请求并创建了新的资源
  • 202:已接受,已经接收请求,但未处理完成
  • 203:非授权信息,请求成功。但返回的meta信息不在原始的服务器,而是一个副本
  • 204:无内容,服务器成功处理,但未返回内容。在未更新网页情况下,可确保浏览器继续显示当前文档
  • 205:重置内容,服务器处理成功,浏览器应该重置文档视图
  • 206:部分内容,服务器成功处理部分get请求
3 重定向, 需要进一步操作以完成请求
  • 300: 多种选择,请求资源包含多个位置,相应可返回一个资源特征与地址的列表用于用户终端
  • 301:永久移动
  • 302:临时移动
  • 303:查看其他地址
  • 304:未修改
  • 305:使用代理
  • 306:已经被废弃的http状态码
  • 307:临时重定向
4 客户端错误,请求包含语法错误或无法完成请求
  • 400:客户端请求语法错误
  • 401:请求要求用户的身份认证
  • 402:保留,将来使用
  • 403:服务器理解请求客户端的请求,但拒绝执行此请求
  • 404:服务器无法根据客户端的请求找到资源
  • 405:客户端请求的方法被禁止
  • 406:服务器无法根据客户端请求的内容特性完成请求
  • 407:请求要求代理的身份认证
  • 408:超时
  • 409:服务器完成客户端的put请求可能返回此代码,服务器处理请求时发生冲突
  • 410:客户端请求的资源已不存在
  • 411:服务器无法处理不带Content-Length的请求信息
  • 412:客户端请求信息的先决条件错误
  • 413:请求实体过大,服务器无法处理,拒绝请求
  • 414:请求url过长,服务器无法处理
  • 415:服务器无法处理请求附带的媒体格式
  • 416:客户端请求的范围无效
  • 417:服务器无法满足Expect的请求头信息
5 服务器错误,服务器在处理请求的过程中发生了错误
  • 500:服务器内部错误
  • 501:服务器不支持请求的功能
  • 502:作为网关或者代理工作的服务器尝试执行请求时,从远程服务器收到一个无效的响应
  • 503:由于超载或系统维护无法处理客户端的请求
  • 504:充当网关或者代理的服务器未及时从服务器获取请求
  • 505:服务器不支持请求的http协议的版本,无法完成处理

JVM

运行时数据区

  1. 方法区
  2. 虚拟机栈:线程私有
  3. 本地方法栈:线程私有:为Native方法服务
  4. 程序计数器:线程私有

引用

  1. 强引用
  2. 弱引用
  3. 软引用
  4. 虚引用

框架

Spring

其他问题

未完待续 温故知新 未央书斋

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ambrosedream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值