MYSQL:MySQL面试题
- 事务四大特性,隔离级别
- 索引设计原则,失效情况
- 存储结构区别,B-tree,B+tree,hash,红黑树
- 数据库锁
- 数据库记录删除时物理还是逻辑,为什么不建议物理删除
到现在我们认识到,逻辑删除有利好之处,但是也要付出一定的代价。那么应该用逻辑删除吗?
从项目的规模来讲 一般的建议是小型系统可以采用物理删除,因为数据恢复的成本,或者说数据的价值,相比较使用逻辑删除的开发、运维付出要少。但是物理删除!=随意删除,要认识到删除操作的风险,重要数据应该设计历史表,删除之前将删除的数据复制到历史表。 中大型项目应该采用逻辑删除,,有一句话“数据是无价的”。必须承认,在很多时候,数据的价值是远远高于人工的成本的。
从数据价值来讲 价值比较高的数据,如电商系统的订单之类的,毫无疑问,一般都是只允许逻辑删除的,及时必须要做物理删除,也要通过备份表、备份日志等方式保证数据可以快速恢复。 价值比较低的数据,比如用户操作日志之类,这种数据价值不高,而且数据量很大,在资源有限的情况下,可以考虑物理删除,但是这种危险操作尽量也不要由系统功能去做,而应该由专业的DBA去完成——至于怎么降低DBA操作的风险,大概就得靠制度了
JAVA:
1: JVM类加载机制,双亲委派机制概念,垃圾回收算法简述,内存模型。
JVM类加载机制
2:数组链表哈希表结构,扩容机制,线程安全的hash
HashMap存储操作
3:concurrenthashmap用什么保证线程安全。CAS概念
ConcurrentHashMap
4:jdk加锁手段有哪些?解释volatile关键字,死锁条件。
5:线程池创建方式,核心参数
6:多线程协作相关类和区别,异常处理,CountDownLatch,CyclicBarrier,Semaphore,Phaser,CompletableFuture
7:多线程顺序打印
4种方法实现多线程按着指定顺序执行
8:用jdk写出一个限流
Semaphore信号量
9:sleep
和wait
(1)
sleep
在任何地方都能使用;wait
方法则必须放在 synchronized 块里面。 (2)sleep
一般用于当前线程休眠,或者轮循暂停操作;wait
则多用于多线程之间的通信。 (3)sleep
是Thread类的静态本地方法,wait
则是Object类的本地方法。 (4)sleep
则不释放锁,wait
会释放锁。 (5)sleep
会让出CPU执行时间且强制上下文切换,而wait
则不一定,wait
后可能还是有机会重新竞争到锁继续执行的。 (6)sleep(milliseconds)
可以用时间指定来使他自动醒过来,如果时间不到你只能调用interreput()
来强行打断;wait
可以用notify/notifyAll
直接唤起.
Spring:
1:ioc和aop,动态代理,实际应用
2:Bean生命周期,线程安全问题,循环依赖
3:设计模式:单例模式,模板方法,策略,责任链
4:事务传播机制,事务生效问题
5:springboot配置文件优先级,启动流程
spring-cloud-config配置中心 => (命令行参数)jvm参数 => 系统环境变量 => 项目内的application-xxx.yaml => 项目内的application.yaml => bootstrap.yaml
–file:./config/
–file:./
–classpath:/config/
–classpath:/
//file: 指当前项目根目录;classpath: 指当前项目的类路径,即 resources 目录。
//位于相同位置的 application.properties 的优先级高于 application.yml。
6:自定义stater,了解spi么?<br /> 7:@import的四种情况,普通类、configution类,importSelector实现类,ImportBeanDefinitionRegistrar类<br /> <br />Redis:<br /> 1:常用数据结构及原理概述,list,hash,zset,渐进式rehash<br /> 2:管道理解<br /> 3:redis锁<br /> 4:持久化方式对性能的影响<br /> 5:雪崩穿透,解决方案<br /> 6:数据缓存一致性<br /> <br />MQ:<br /> 1: mq消息丢失如何保证<br /> 2:怎么保证顺序消费<br /> 3:mq发布订阅模式<br /> 4:<br /> <br />定时任务:<br /> 1:boot自带<br /> 2:xxl-job<br /> <br />cloud:<br /> 1:注册中心,raft算法,cap理论,心跳机制,数据同步<br /> 2:断路器,sentinel或hystrix<br /> 3:网关,zuul或gatway<br /> 4:配置中心,热刷新,config或nacos,数据同步<br /> <br />算法:<br /> 二分查找算法<br /> 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标