Java面试题记录(含答案)

1. java8的新特性

  • Lamdba表达式搭配Stream API

    1、Stream自己不会存储数据。
    2、Stream不会改变源对象。相反,它们会返回一个持有结果的新Stream对象
    3、Stream操作时延迟执行的。这就意味着它们等到有结果时候才会执行。
    4、和list不同,Stream代表的是任意Java对象的序列,且stream输出的元素可能并没有预先存储在内存中,而是实时计算出来的。它可以“存储”有限个或无限个元素。例如:我们想表示一个全体自然数的集合,使用list是不可能写出来的,因为自然数是无线的,不管内存多大也没法放到list中,但是使用Sream就可以

  1. 函数式接口
  2. 方法引用和构造引用
  3. 接口中的默认方法和静态方法
  4. 新时间日期API
  5. OPtional

    1、 optional类是一个容器,代表一个值存在或者不存在,原来使用null表示一个值存不存在,现在使用optional可以更好的表达这个概念,并且可以避免空指针异常。
    2、Optional.ofNullable(T t) :若t不为空创建一个Optional实例否则创建一个空实例;
    3、isPresent() : 判断是否包含值;
    4、orElse(T t) :如果调用对象包含值,返回该值,否则返回t;

2. java8四大内置函数接口

  1. 消费型接口 Consumer void accept(T t)
  2. 供给型接口 Supplier T get()
  3. 函数型接口 Function<T,R> R apply(T t)
  4. 断定型接口 Predicate boolean test(T t)

3. volatile关键字作用

  1. 线程的可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。
  2. 顺序一致性:禁止指令重排序。

Volatile与Synchronized比较

  1. Volatile是轻量级的synchronized,因为它不会引起上下文的切换和调度,所以Volatile性能更好。
  2. Volatile只能修饰变量,synchronized可以修饰方法,静态方法,代码块。
  3. Volatile对任意单个变量的读/写具有原子性,但是类似于i++这种复合操作不具有原子性。而锁的互斥执行的特性可以确保对整个临界区代码执行具有原子性。
  4. 多线程访问volatile不会发生阻塞,而synchronized会发生阻塞。
  5. volatile是变量在多线程之间的可见性,synchronize是多线程之间访问资源的同步性。

4. redis五种类型

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. sort set (有序集合)

5. MySQL底层数据结构

  1. 首先要知道索引存储在文件中,文件放置磁盘中,索引建多了会影响增删改效率。每查询一次索引节点都会进行一次磁盘IO读取,即要寻道和旋转。寻道需要移动磁头耗费较多时间。
  2. MySQL有两种常见的存储引擎:InnoDB(默认)、MyISAM(用得少,在MySQL8.0中被废弃掉了),存储引擎范围是表级别的

6. 慢sql处理

7. 索引最左匹配原则

8. synchronized如何实现同步锁

9. synchronized和lock的区别

10. springboot的核心

11. redis的持久化机制

12. redis的RDB和AOF

13. redis的缓存击透、雪崩解决方案

14. 多线程

笔试题:类加载 多线程 sql
父子类static块加载顺序 二分法查找有序数组中的数字
多线程轮流打印1和10(1到10)
sql查找某一天可以参加的活动

面试题:Dubbo jvm mybatis spring 集合(arraylist hashmap)
springboot redis mongodb ddd

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值