Java面经复习(七)

问:给定sql语句如何判断是否走了索引?

答:可以采用explain语句判断sql语句的执行情况,在Extra列会标识当前查询是否使用了索引。

问:给了sql语句如何设计索引?

答:一般依照sql语句将常用的列按照最左匹配的方式排列好,举例如下:
select id,age from user where age=20;
select id,age,name from user where age=30,name="liming;
select id,age,name,gender from user where gender=“男性”;
这时候按照最左匹配和覆盖索引,那么索引就应该设置为(age,name,gender);

问:索引为什么用b+树好?

答:b+树相较于b树,其叶子节点可以连续访问,因此可以对一个范围内的数据进行访问,且速度较快。相较于二叉平衡树,红黑树等,其多叉平衡树的结构使得其层高较低,访问次数也更快。

问:redis的数据类型,zset了解吗,介绍一下快表?

答:redis的数据结构包括String、set、zset、hash、List;zset为有序集合,其底层采用的字典+跳表的结构。快表即TLB,是在虚拟存储情况下对程序访问局部性的一种利用,其通过保存内存与磁盘中换出的页,来减少换页次数,加快访存;

问:死锁的原理?

答:死锁是由于多个进程在占据资源的情况下,又对新的资源提出申请,且发生了资源的循环等待的情况,从而致使系统出现停机、任务无法进行的情况。死锁的四大必要条件是互斥访问、资源循环等待、
占有并请求、不可剥夺;

问:状态码,500/502/503/504代表的含义?

答:首先5xx类型的错误基本为服务器端的错误。
500 Internal Server Error:该状态码表明服务器端在执行请求时遇到了一个妨碍它为请求提供服务的错误,也有可能是 Web 应用存在的 bug 或某些临时的故障。
502 Bad Gateway:作为代理或网关使用的服务器从请求响应链的下一条链路上受到了一条伪响应(比如,它无法连接到其他父网关)时,使用此码。
503 Service Unavailable:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求,但是将来可以。如果服务器知道什么时候能回复,可以在响应首部中添加Retry-After
504 Gateway Timeout:与408类似,只是这里的响应来自一个网关或者代理,他们等待另一个服务器对齐请求进行响应超时了。

代码部分:二叉树最大路径和?

答:leetcode124,hard。

参考资料:
字节跳动后台开发 java
HTTP状态码最全汇总