2022-03-24面经

面试公司:纵横文学
工作经验:3.5年
期望薪资:18-20k

面试官人很好,上来先聊了聊学校,家乡,当前薪资结构帮我放轻松

Java基础
Q:volatile作用:
A:内存可见性和防止指令重排序
Q:在多线程的环境下int类型变量可以用volatile修饰解决并发问题,当变量是List类型可以吗?
A:在多线程环境下List有个实现类Vector是线程安全的,可以用这个类。感觉面试官想问的不是这个
Q:线程池的参数中有两个核心线程数和最大线程数,这两个参数有什么区别
A:核心线程数是在线程创建后就运行不会被销毁的,最大线程数是控制线程池中最大的线程数量的,当任务数超过核心线程数的时候会新创建线程,新创建的线程和核心线程的总和不能超过最大线程数,当非核心线程的空闲时间超过了设置的时间后会被销毁
Q:确定非核心线程是在任务数超过核心线程数的时候才创建的吗?
A:确定。。。

Spring:
Q:BeanFactory和FactoryBean的区别
A:BeanFactory是创建Bean的,FactoryBean是创建创建类工厂的。这个之前学过现在忘了。。胡诌了半天
Q:ApplicationContext和BeanFactory的区别
A:前者继承后者
Q:确定吗?
A:不确定,忘了。。。
Q:Spring是怎么创建Bean的
A:想了半天,通过反射创建的
还问了一些其他的Spring的问题,基本都没答上来

Redis
Q:redis哨兵作用
A:监控redis主节点可用性,将当前可用的主节点地址返回给客户端
Q:哨兵怎么部署的,需要多个节点吗?
A:需要,最少三个
Q:为什么最少三个?
A:哨兵也有可用性的问题,一台节点挂了另外两台顶上
Q:是挂了之后有选举吗?
A:不了解了。。
Q:当MySQL是主从,怎么解决缓存数据不一致的问题的
A:线上遇到过这个问题,先删了数据库,再删了redis,请求过来了从库还没同步到主库的数据,把从库的旧数据读出来存到缓存里面了。解决方案是延迟一秒再删缓存
Q:延迟双删是吗?为什么设置的一秒而不是三秒五秒
A:嗯(内心OS:原来这个方案还有专有名词),时间是靠感觉一秒足够主库数据同步到从库配置的

MySQL:
Q:三个日志文件binlog的作用说一下
A:只了解binlog,用来做主从同步的,项目中有用canal模拟从节点读取主节点的binlog同步数据到ElasticSearch
Q:它可以读取从节点的binlog来做数据同步吗?
A:不知道,猜测应该可以
Q:binlog还有其他作用吗?
不了解了
Q:另外两个日志的作用?
A:没了解过,猜测可能是跟事务有关,用来回滚事务
Q:MySQL怎么实现的事务隔离?
A:设置事务隔离级别😂
Q:不对,MySQL默认的事物隔离级别是可重复读,它怎么解决的幻读的问题?
A:通过MVCC机制解决的,在每一行数据加了个事务ID,通过类似于乐观锁的方式解决
Q:你确定吗?说一下MVCCxxx,忘了问的是啥了
A:不了解了。。。
Q:说一下最左匹配原则
A:索引列要在where条件最左边
Q:假如有a,b,c,d四个字段,索引设置的a,b,c联合索引,在where条件中查a,b可以用到索引吗?
A:可以
Q:在where条件中查a,c可以用到索引吗?
A:可以用到a索引
Q:确定吗?有没有在其他情况下可以用到c索引
A:不知道了。。。
Q:MySQL字符集utf-8mb4和utf-8有什么区别
A:憋了半天,好像是utf-8mb4是三个字节代表一个字符。。。

面试完感觉应该是凉了,要学的东西还有很多,如果是我招人最怕招到似懂非懂的,非常容易出问题。
刚开始找工作目前只复习了JVM、Kafka消息队列、Redis。框架、数据库、多线程还没开始看,复习完之后那些不会的应该能答上来百分之七十#面试题目#
全部评论
感谢分享,楼主费心了
点赞 回复 分享
发布于 2022-05-14 23:28

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
2 10 评论
分享
牛客网
牛客企业服务