公司面经(2)

85 阅读5分钟

这家公司因为一开始准备的录屏会导致视频开不了,就没进行录屏,但是录音也来不及了,面试官已经到了。哭了,现在的复盘全靠印象。

1.jdk8的新特性

  • interface
  • lambda表达式
  • stream流
  • optional
  • datetime这个时间api

2.问了怎么实现的redis+lua脚本

面试官跟我讨论了为什么lua脚本的原子性,其实redis的分布式锁就可以代替了lua脚本的原子性,当时觉得确实是这样的,现在查资料发现lua脚本的原子性在删除锁的时候很有用。因为如果锁具有过期时间,还没删除的时候,就释放掉了锁,导致删除锁的是其他线程获取到的锁,就会出现问题

3.问了spring cloud gateway如何处理微服务的用户认证和安全问题

在这里没有答好,乱扯扯到了token但是自己又没真的做过,导致说错了。打算后续在项目中加上jwt+spring cloud gateway的实操项目点

参考链接:blog.csdn.net/tang_seven/…

4.问哪个项目你更熟悉点,就问哪个项目?

一定要回答复杂的项目,不熟悉在面试前一定要去准备好,去学习每一个写到上面的知识点。

5.说一下mysql的存储引擎

mysql的存储引擎用的是INnoDB,比起之前的myIsAm,多了行级锁颗粒度更细的锁级别,支持事务,支持mvcc,支持数据库异常崩溃后的安全恢复,支持外键,性能更加强大。

6.讲一下索引

索引是一种用于快速查询和检索数据的mysql里的数据结构,可以降低数据库排序的压力,加快检索速度。但是创建和维护会需要许多时间。

底层用的是B+树,阶数更多,路径更短,并且非叶子结点存的是指针,叶子结点存的是数据。B树的检索相当于做二分查找,而B+树的检索就十分稳定了,因为任何查找都是从根节点到叶子节点。它具备更少的IO次数以及更适于范围查询这些优势。

mysql用的InnoDB引擎用的就是索引结构和数据一起存放的索引---主键索引也就是聚簇索引 非聚簇索引---索引结构和数据分开存放的索引,二级索引也就是非聚簇索引

7.说一下mysql的锁

  • 按锁的粒度分类:行锁,表锁,全局锁,间隙锁
  • 还可以分为:共享锁(读锁),排它锁(写锁)
  • 逻辑层面:乐观锁、悲观锁

8.你了解spring cloud的熔断机制吗?

我直接回答了不是很清楚。。。

背景:微服务系统因为一个服务出现故障,而导致故障沿着服务调用而疯狂蔓延,进而导致整个微服务系统瘫痪,这就是"雪崩效应"

例子:a服务调用b服务,b服务没有响应,那么a服务就会一直等着b服务响应,如果这时候a服务还霸占着资源,那么会导致阻塞情况。而熔断机制就是会切掉a服务调用b服务这一个链路,这样子就会解决雪崩效应这种状况,如果a服务依然想要调用资源,我们可以进行服务降级,调用能提供同样服务的b1服务,但这就不是主服务了,所以我们可以称之为服务降级。

9.问了Java的数据类型?

我回答成集合类型了。。。

  • 6 种数字类型:
    • 4 种整数型:byteshortintlong
    • 2 种浮点型:floatdouble
  • 1 种字符类型:char
  • 1 种布尔型:boolean

9.5 Java的集合类型?

分为map和collection

map:

HashMap:非线程安全的,比起HashMap效率高。每次扩容都是2的幂次方,如果链表长度大于阈值时,就会将链表的底层结构转换为红黑树

collection:

list:
  • ArrayList:线程不安全,底层是Object数组,支持快速访问,末尾会预留一定的容量空间
  • LinkedList:线程不安全,底层是双向链表,不支持快速访问,内存空间消耗大
set:

无序性,不可重复性

  • HashSet
  • LinkedHashSet
  • TreeSet
Queue:
  • Queue---单端队列,先进先出
  • Deque---双端队列
  • PriorityQueue:二叉堆的数据结构,底层是可变长的数组

10.接着问了ArrayList和LinkedList的区别?

  • 两个都不保证线程安全
  • ArrayList的底层数据结构是Object数组,支持快速访问,末尾会预留一定的容量空间
  • LinkedList的底层数据结构线程不安全,底层是双向链表,不支持快速访问,内存空间消耗大,因为它要存放直接后继,直接前驱以及数据

11.了解ArrayList的扩容机制吗?

初始容量是0,第一次添加数据时才会初始化容量为10;

在进行扩容的时候每次都是原来的1.5倍,并且每次扩容都需要拷贝数组

总结

这次面试是我几次面试以来考察技术比较多的一次面试了,所以最终拿到的offer我选择了这家,而且进去后做的事情感觉跟我未来的方向相符合,不过也是实习offer,但也会好好认真做认真学习东西的。