百词斩面试概要
2021-04-20 13:53:32 0 举报
AI智能生成
成都超有爱公司面试主要面试题
作者其他创作
大纲/内容
Spring
zull如何实现高可用
这种情况下,Zuul的高可用非常简单,只需将多个Zuul节点注册到Eureka Server上,就可实现Zuul的高可用。此时,Zuul的高可用与其他微服务的高可用没什么区别。
我们可借助一个额外的负载均衡器来实现Zuul的高可用,例如Nginx、HAProxy、F5等。
算法
TopN问题
数据储存
Mysql
如何判断是否使用索引
explain select * from p_user WHERE name='B'
查询结果key为空则没使用索引
explain
table:顾名思义,显示这一行的数据是关于哪张表的;
type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为:const、eq_reg、ref、range、indexhe和ALL;
possible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从where语句中选择一个合适的语句;
key: 实际使用的索引。如果为NULL,则没有使用索引。很少的情况下,MySQL会选择优化不足的索引。这种情况下,可以在Select语句中使用USE INDEX(indexname)来强制使用一个索引或者用IGNORE INDEX(indexname)来强制MySQL忽略索引;
key_len:使用的索引的长度。在不损失精确性的情况下,长度越短越好;
ref:显示索引的哪一列被使用了,如果可能的话,是一个常数;
rows:MySQL认为必须检查的用来返回请求数据的行数;
Extra:关于MySQL如何解析查询的额外信息。
储存引擎
MyISAM
innoDB
b+tree
hash
memory
redis
持久化
RDB
全量备份
会降低吞吐量,因此备份频率不高
AOF
增量备份,记录操作日志
会写入缓存区,在输入磁盘,默认配置每秒刷一次
备份文件更大,恢复较慢
用AOF重写可以减小AOF文件大小,默认配置是达到一定大小后重写
如何用阻塞队列实现异步处理
生产者-消费者模式
生产者往对类中放入待处理信息
消费者阻塞式读取队列,读到消息则对消息处理,否则阻塞当前线程
分支主题
操作系统
进程
进程的通信方式
无名管道通信
高级管道通信
有名管道通信
消息队列通信
信号量通信
信号
共享内存通信
socket 套接字通信
进程拥有哪些资源
虚拟地址空间
一个全局唯一的进程ID (PID)
一个可执行映像(image),也就是该进程的程序文件在内存中的表示
一个或多个线程
一个位于内核空间中的名为EPROCESS(executive process block,进程执行块)的数据结构,用以记录该进程的关键信息,包括进程的创建时间、映像文件名称等。
一个位于内核空间中的对象句柄表,用以记录和索引该进程所创建/打开的内核对象。操作系统根据该表格将用户模式下的句柄翻译为指向内核对象的指针。
一个位于内核空间中的对象句柄表,用以记录和索引该进程所创建/打开的内核对象。操作系统根据该表格将用户模式下的句柄翻译为指向内核对象的指针。
一个位于描述内存目录表起始位置的基地址,简称页目录基地址(DirBase),当CPU切换到该进程/任务时,会将该地址加载到CR3寄存器,这样当前进程的虚拟地址才会被翻译为正确的物理地址。
一个位于用户空间中的进程环境块(Process Environment Block, PEB)。
一个访问权限令牌(access token),用于表示该进程的用户、安全组,以及优先级别。
线程
线程的通信 方式
1、消息队列
2、使用全局变量
3、使用事件CEvent类实现线程间通信
4、Volatile 内存共享
5\Thread join
子主题
子主题
0 条评论
下一页