小米一面 3.29

1.数组和链表的区别

2.hashMap数据结构

3.HashMap 在使用时需要注意什么地方

首先了解过其底层的都知道,HashMap有个扩容机制,是比较耗时的,所以为了减少扩容次数,在知道要存放多少元素的前提下最好指定HashMap的链表初始大小。

为了减少链表的碰撞次数,尽可能的选择不可变的类型作为Key,以为其不可变形,其HashCode的值也会不可变。如String类型

使用HashMap做缓存时,因为其线程不安全特性,最好使用ConcurrentHashMap代替。

key相同会覆盖之前的数据,因为其key的hashcode相同会向其index所对应的entry进行equals相同则覆盖

4.currentHashMap

5.synchronized 关键字和 volatile 关键字是两个互补的存在,而不是对立的存在!

  • volatile 关键字是线程同步的轻量级实现,所以 volatile性能肯定比synchronized关键字要好 。但是 volatile 关键字只能用于变量而 synchronized 关键字可以修饰方法以及代码块 。
  • volatile 关键字能保证数据的可见性,但不能保证数据的原子性。synchronized 关键字两者都能保证。
  • volatile关键字主要用于解决变量在多个线程之间的可见性,而 synchronized 关键字解决的是多个线程之间访问资源的同步性。

6.重写和重载的区别

7.java面向对象的思想

8.final用来修饰什么

  1. 修饰类:当一个类被声明为final时,表示该类不能被继承,即不能有子类。这样可以确保该类的实现不会被修改或扩展。
  2. 修饰方法:当一个方法被声明为final时,表示该方法不能被子类重写或覆盖。这样可以确保该方法的实现不会被修改。
  3. 修饰变量:当一个变量被声明为final时,表示该变量的值不能被修改。一旦被赋值后,它的值将保持不变。
  4. 接口中的成员变量只能是public static final类型的

9.软引用和弱引用的区别

10.gc的流程?垃圾回收算法

11.进程和线程的区别

12.线程有哪些状态

13.notify()和notifyAll()的区别,哪个cpu会获取到锁?

14.线程池参数关系

15.http和https的区别

16.对称加密和非对称加密的区别

HTTPS 采用的是对称加密非对称加密结合的「混合加密」方式:

  • 在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。
  • 在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。

采用「混合加密」的方式的原因:

  • 对称加密只使用一个密钥,运算速度快,密钥必须保密,无法做到安全的密钥交换。
  • 非对称加密使用两个密钥:公钥和私钥,公钥可以任意分发而私钥保密,解决了密钥交换问题但速度慢。

17.get和post的区别

18.状态码

19.redis数据结构使用场景

20.最复杂的问题以及如何找到的解决方案

21.单例模式

#软件开发2024笔面经#
全部评论

相关推荐

2 6 评论
分享
牛客网
牛客企业服务