面试题总结

一、尚硅谷面试题系列

1.考察自增变量,示例:

public static void main(String[] args) {
		int i = 1;
		i = i++;	
		int j = i++;
		int k = i + ++i * i++;
		System.out.println(i);
		System.out.println(j);
		System.out.println(k);
}

考察虚拟机栈中的栈帧,栈帧包括局部变量表,操作数栈,动态链接,方法返回地址,附加信息;
参考连接:https://zhuanlan.zhihu.com/p/45354152
https://blog.csdn.net/qq_38467473/article/details/103899955

2.单例模式设计
有饿汉式和懒汉式,方法加锁和代码块加锁,双重校验锁,静态内部类,枚举类的方式

3.类初始化和实例初始化
在这里插入图片描述

考察点:

  • main方法所在类需要先加载和初始化; 一个子类初始化前先父类初始化;
  • 一个类初始化就是执行方法,方法由静态类变量显示赋值代码和静态代码块组成,从上而下执行
  • 方法只执行一次;
  • 实例初始化就是执行方法,方法由静态实例变量显示赋值代码和非静态代码块,对应构造器代码块组成,从上而下执行;
  • 方法可能重载多个,有几个构造器就有几个方法;
  • 方法首行是super(),对应父类的方法;
  • 方法重写和方法的多态性;

4.方法参数传递机制
考察点:基本数据类型传递数值,而引用数据类型传递地址值

5.递归和循环迭代

6.成员变量和局部变量
在这里插入图片描述

7.Spring中的bean的作用域
singleton,prototype,request,session,global session

8.Spring中支持的数据库事务传播属性和隔离级别
设置propagation:用来设置事务的传播行为,默认是Propagation.REQUIRED, isolation:用来设置事务的隔离级别,默认是可重复读

9.SpringMvc中如何解决POST请求乱码问题,GET请求又如何解决
POST请求乱码在web.xml文件中设置charaterfilterencoding的值为utf-8,GET请求在tomcat的connect标签的uriencoding属性设置为utf-8

10.SpringMvc的工作流程
参考链接:https://www.cnblogs.com/hamawep789/p/10840774.html

11.Mybatis中实体类属性和表中字段不一致

  • 设置别名;
  • 设置驼峰命名;
  • 设置结果集和实体类之间的映射;

12.Linux常用的服务操作命令
centos6下使用service 服务名 【操作】,使用chkconfig命令设置自启动,查看服务的方法/etc/init.d/服务名
centos7下使用systemctl 【操作】服务名, 使用systemctl enable service_name设置自启动,使用systemctl --type service 查看服务命令

13.git分支相关命令
在这里插入图片描述

14.Redis持久化
Rdb生成文件快照的方式,全量备份;Aof是以日志的形式来记录每个写操作,只许追加文件

15.Mysql什么时候适合建索引,什么时候不适合建索引
在这里插入图片描述

16.JVM垃圾回收机制中,GC发生在JVM哪个部分,有几种GC,它们的算法是什么
GC发生在JVM的堆中,有两种GC,一种是minor GC,另外一种是full GC,回收算法是标记-清除,复制算法,标记-整理,分代回收算法

17.Redis在项目中使用场景
常用五种数据类型的使用场景
参考链接:https://www.cnblogs.com/wangcuican/p/12174758.html

18.volatile的理解
保证可见性,和禁止指令重排,但是不保证原子性,这里为了解决原子性可以依靠synchronized,或者使用AutomicInteger的原子类来实现,而volatile的实际应用场景,单例模式的dcl

19.cas的理解
unsafe.compareAndSwapInt(this, valueOffset, expect, update),在上面的AutomicInteger的自增和自减就是依靠cas来完成的,但是cas会产生aba问题,可以依靠版本号(AtomicStampedReference)来解决aba问题

20.集合list(ArrayList)线程不安全类
快速失败类(并发修改异常),这里要使用迭代器的remove方法进行删除,线程安全类Vector,Collections.synchronizedList,CopyOnWriteArrayList,COW写时复制机制

21.集合set(HashSet)线程不安全类
HashSet底层依靠HashMap来实现,map的key存放值,value是一个空对象 -》 map.put(e, new Object())

22.集合map (HashMap)线程不安全类
参考链接:https://mp.weixin.qq.com/s/VtIpj-uuxFj5Bf6TmTJMTw

23.锁的公平锁和非公平锁
公平锁是按申请锁的顺序来获取锁,而非公平锁并不是按申请锁的顺序来获取,会出现插队现象

24.锁的可重入锁(又名递归锁)
在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁

25.锁的自旋锁
采用循环方式去尝试获取锁,这样好处是减少线程上下文切换,但是会很消耗cpu

26.锁的读写锁ReentrantReadWriteLock
读是共享,写时互斥

27.JUC包下CountDownLatch,CyclicBarrier,Semaphore
CountDownLatch倒序计数器,CyclicBarrier正序计数器,Semaphore信号量,模拟资源类

28.阻塞队列
在这里插入图片描述

29.线程通信之生产者和消费者
使用一个flag标志位和lock创建多个condition,来实现相互通知(判断-操作-通知),注意判断使用while,这是为了解决唤醒之后再做一次判断

30.Synchronized和Lock的区别
在这里插入图片描述

31.创建线程的方式
在这里插入图片描述

32.线程池的几种创建方式
使用Executors(缺点),使用ThreadPoolExecutor(7大参数,工作流程)

33.死锁编码及原因分析
两个及两个以上线程互相持有对方的锁,造成相互等待现象;通过jps定位有问题代码的pid,然后再通过jstack查看对应pid进程的堆栈信息
参考链接:https://blog.csdn.net/qq_38071004/article/details/81004765

34.JVM调优和参数配置
参考链接:https://blog.csdn.net/zhangcongyi420/article/details/89060802

35.工作中常用jvm参数调优
在这里插入图片描述

36.对oom的认识
在这里插入图片描述
37.假如生产环境出现CPU占用过高,请谈谈你的分析思路和定位
参考链接:https://blog.csdn.net/gg4236131/article/details/120100385

38.java 字符串常量池
intern() 方法, 而“java”字符串会返回false,因为jvm中已经加载过了这个字符串常量了
参考链接:https://blog.csdn.net/oneby1314/article/details/113789304

39.求两个数之和-算法题
参考链接:https://blog.csdn.net/oneby1314/article/details/113789304

40.可重入锁synchronized,ReentrantLock,synchronized底层原理?
在这里插入图片描述

参考链接:https://blog.csdn.net/oneby1314/article/details/113789332

41.LockSupport 是什么?
在这里插入图片描述

参考链接:https://blog.csdn.net/oneby1314/article/details/113789332

42.AQS的理解
在这里插入图片描述

43.AOP常用注解
在这里插入图片描述
参考链接:https://blog.csdn.net/oneby1314/article/details/113789384

44.spring中的循环依赖
在这里插入图片描述
参考链接:https://www.cnblogs.com/liuqing576598117/p/11227007.html

45.redis分布式锁
在这里插入图片描述

46.redis内存淘汰策略,手写lru算法
参考链接:https://blog.csdn.net/oneby1314/article/details/113789412

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值