首页 > 其他分享 >面试准备

面试准备

时间:2023-07-18 22:45:17浏览次数:53  
标签:删除 索引 age 面试 算法 线程 key 准备

58

分布式事务***2PC,3PC,一致性哈希,Raft

Raft算法 是分布式系统开发首选的共识算法,Raft 算法是通过一切以领导者为准的方式,实现一系列值的共识和各节点日志的一致。

分三种角色:

跟随者(Follower):普通群众,默默接收和来自领导者的消息,当领导者心跳信息超时的时候,就主动站出来,推荐自己当候选人。

候选人(Candidate):候选人将向其他节点请求投票 RPC 消息,通知其他节点来投票,如果赢得了大多数投票选票,就晋升当领导者。

领导者(Leader):霸道总裁,一切以我为准。处理写请求、管理日志复制和不断地发送心跳信息,通知其他节点“我是领导者,我还活着,你们不要”发起新的选举,不用找新领导来替代我。

 

2PC和3PC都存在性能问题

2PC 有数据不一致问题、同步阻塞、单点故障。

分为准备阶段和提交阶段(confirm 或 cancle)。

3PC 把准备阶段分为两段 canCommit、preCommit、DoCommit。

 

主要用的是TCC这种,try-confirm-canle : https://www.cnblogs.com/jiangym/p/17455823.html

 

 

redis

数据一致性
  • CAP:一致性、可用性、分区容错性
  • redis满足的是AP
  • 一致性在redis中是最终一致性
持久化机制
  • AOF 每条都存
  • RDB 定期存
redis集群模式 过期策略
  • 定时删除
  • 惰性删除 访问时才删除
  • 默认同时开启这两个策略
淘汰策略
  • noeviction:不会淘汰任何键值对,而是直接返回错误信息。
  • allkeys-lru:从所有 key 中选择最近最少使用的那个 key 并删除。
  • volatile-lru:从设置了过期时间的 key 中选择最近最少使用的那个 key 并删除。
  • allkeys-random:从所有 key 中随机选择一个 key 并删除。
  • volatile-ttl:从设置了过期时间的 key 中选择剩余时间最短的 key 并删除。
  • volatile-lfu:淘汰的对象是带有过期时间的键值对中,访问频率最低的那个。
  • allkeys-lfu:淘汰的对象则是所有键值对中,访问频率最低的那个。

淘汰算法

  • FIFO 先进先出
  • LRU 使用过的和新插入的放到链表头,满了删除链表最后的。
  • LFU 最近最不常用 有一个引用计数,删除数小的。

 

 

数据库 

  建mysql会考虑什么 写sql会考虑什么

什么情况会索引失效

  1. not in
  2. not exists
  3. 联合索引
    1. 不符合最左匹配
    2. 要么不同时升序,要么不同时降序
    3. order by语句中没有加where或limit关键字,该sql语句将不会走索引
    4. countryi,age 联合索引中 country > "C" and age = 18;  age用不到索引;
      但是country like "C%" and age = 18; age却用到了索引;country like "%C%" and age = 18; 都不走索引
      1. 如果索引字段上使用 like '%xxx',这种不会用到索引,后面的索引也不会用到,如果格式为 like 'xxx%',这种可以用到索引,而且不影响后面的索引使用。

怎么进行sql调优

  1. 通过explain看执行计划 主要看type,key,extra字段
    1. type:表示查询时所使用的索引类型,包括ALL、index、range、ref、eq_ref、const等。
      1. system>const>eq_ref>ref>range> index>all
    2. possible_keys:表示可能被查询优化器选择使用的索引。
    3. key:表示查询优化器选择使用的索引。
    4. Extra:表示其他额外的信息,包括Using index、Using filesort、Using temporary等。

数据库的悲观锁和乐观锁

悲观锁:

关闭自动提交后 select * from update

乐观锁:

cas 通过版本号比较

 

数据库事务

 

读写锁的实现

 

一条语句的执行过程 具体有哪些

  1. 使用连接器,客户端与mysql建立连接。
  2. querycache,是否命中了缓存
    1. show global variables like '%query_cache%';
    2. https://www.cnblogs.com/chang09/p/16576004.html  
  3. 解析器进行语法分析和语义分析,生成解析树。
    1. 语法是否有问题  
  4. 优化执行器看看索引是否可以优化
    1. 选择合适的索引
    2. 数据的读取方式
  5. 执行器执行sql

 

 

JUC、并发

reentrantlock 原理 synchronized什么情况下会锁升级。

innodb和myisam 

B树

 

线程池 线程死了 还有线程了吗? 线程池中new一个线程,线程存在还是不存在。线程池的参数。newCachedPool最大能开启多少线程数。 volitle的原理 cutdownlunch 原理 四个同步工具。 原理和使用。 其他线程怎么和主线程同步    

Lang包


java juc lang 包

java容器

4.用过哪些线程安全的类,除了hashtable和concurrenthashmap(原理没说明白),还有java.lang包下的了解过吗

9.hashmap 1.7和1.8的区别,多线程时存在的问题。hashMap底层。1.8的红黑树 原理 好处 。线程安全。 初始容量。 数组大小超过堆剩余大小 还会分配内存吗?

     

JVM

GC  CMS、G1 新生代和老年代分别用什么算法

 类加载器有哪些 双亲委派是由父类加载还是子类加载  

消息队列

原理 + 面经            

算法

各种排序算法 讲一下 两个数组的交集  反转链表 二叉树的BFS的小问题      

http

TCP和滑动窗口       bio nio aio 彻底弄懂    

 spring

bean加载流程 代理模式详细  
设计模式 和应用场景 

 springCloud组件

 

tomcat

热部署原理  

线上问题排查

oom    

Nginx

11.跨域除了nginx还能用什么

       

标签:删除,索引,age,面试,算法,线程,key,准备
From: https://www.cnblogs.com/jiangym/p/17554577.html

相关文章

  • Go语言Revel框架 准备工作
    一、安装Go参考下面几篇文章:http://golang.org/doc/install 二、设置GOPATH参考下面几篇文章: 三、安装git和hggoget克隆依靠 Git和MercurialInstallingGitInstallingMercurial参考: 四、获得Revelframeworkgogetgithub.com/robfig/revel如果没有设置GOPATH,会下载......
  • hvv面试常问的几个漏洞
    hvv面试常问的几个漏洞一、Struts21.1简介Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新......
  • 面试官:一个 SpringBoot 项目能处理多少请求?(小心有坑)
    你好呀,我是歪歪。这篇文章带大家盘一个读者遇到的面试题哈。根据读者转述,面试官的原问题就是:一个SpringBoot项目能同时处理多少请求?不知道你听到这个问题之后的第一反应是什么。我大概知道他要问的是哪个方向,但是对于这种只有一句话的面试题,我的第一反应是:会不会有坑?所以并......
  • 2023-07面试题
    1,spring中有哪些方式可以把bean注册进ioc容器?①使用xml的方式声明bean的定义,spring容器在启动时会加载和解析这个xml,把bean装载进ioc容器中。②使用@ComponentScan注解去扫描声明了@Controller@Service@Repository@Component注解的类,然后把这些类加载进ioc容器。③使用@Conf......
  • Baseline实验环境准备
    实验Baseline环境搭建准备为了尽快地写成论文初稿,首先需要把实验完成。先将待做实验按几个方面分类:数据集GLUE数据集任务SST模型TransformerBert评价指标BLEUBERTSimilarityBitRate对于GLUE数据集以及其对应的相关任务,我还有点懵逼,在网上也找不到Tra......
  • 字典,元组,元组内置方法、相关面试题 、 集合的内置方法 、字符编码 、文件操作 、函数
    字典的内置方法1.定义方式 d={'usernamne':"kevin"}#定义空字典d={}info=dict(username='kevin',age=18)#{'username':'kevin','age':18} print(info) #dic={#'name':�......
  • java真实业务场景面试题
    Java真实业务场景面试题Java是一种广泛使用的面向对象编程语言,在各个行业中都有广泛的应用。因此,在Java开发人员的面试中,经常会涉及到一些与真实业务场景相关的问题。本文将为您介绍一些常见的Java真实业务场景面试题,并提供相应的代码示例。1.数据库连接池数据库连接池是Java中......
  • Python 全栈工程师必备面试题 300 道(2020 版)
    2020元旦巨献,面试升级必备!献给正在学习Python的同学!Python全栈工程师必备面试题300道(2020版)Python面试不仅需要掌握Python基础知识和高级语法,还会涉及网络编程、web前端后端、数据库、网络爬虫、数据解析、数据分析和数据可视化等各方面的核心知识。针对网上资料参差不齐,并......
  • 10个最常见的HTML5面试题及答案
    1、新的HTML5文档类型和字符集是?HTML5文档类型很简单:<!doctypehtml>HTML5使用UTF-8编码示例:<metacharset=”UTF-8″>2、HTML5中如何嵌入音频?HTML5支持MP3、Wav和Ogg格式的音频,下面是在网页中嵌入音频的简单示例:<audiocontrols><sourcesrc=”jamshed.m......
  • Linux网络配置常用的基础命令(面试也经常提到)
    Linux网络配置常用的基础命令原创 weijishu 微技术之家 2023-07-1407:07 发表于上海通常情况下,不管什么操作系统,配置IP地址分为如下两类:动态DHCP模式:系统默认是DHCP也就是动态获取IP地址,这种有个坏处就是IP地址会经常变换。如果用连接工具的话,IP地址改变之后需要重......