当前位置: 首页 > news >正文

黑马项目一完结后阶段面试45题 JavaSE基础部分20题(二)

十一、集合体系结构和特点

Collection

   └ List 有索引,存取一致,有序,元素允许重复

  ┃     └ ArrayLIst

  ┃     └ LinkedList

  ┃     └ Vector

  └ Set 无索引,无序,元素不允许重复

          └ HashSet

          └ TreeSet

          └ LinkedHashSet

十二、ArrayList特点,扩容

特点

1.增删慢

每次删除元素,都需要更改数组长度、拷贝以及移动元素位置。当然,增删最后一个元素快

2.查询快

连续空间存储数组,根据地址+索引能快速访问到数据。

3.可扩容/动态性

ArrayList使用动态数组作为底层的数据结构,能够自动扩容、缩容

4.非线程安全

多个线程同时访问和修改同一个ArrayList实例,可能会导致不可预测的结果

扩容

无参、传参为0、传列表为0时,创建ArrayList容量为0,添加第一个元素后容量为10,下次正常扩容。

正常扩容,列表满时,扩容1.5倍。

十三、HashMap的原理

对于底层数据结构,采用的是哈希表。

哈希表在jdk1.8之前,哈希表是数组+链表;jdk1.8及之后,哈希表是数组+链表+红黑树。

存取原理:

首先根据键,计算哈希值。

根据哈希值,计算下标,存入数组。

数组中,如果该下标下链表为空,则直接存入;

如果链表不为空,则产生了哈希冲突,进一步判断哈希值是否相等。相等,则重复了,替代掉;

如果不相等,则存入链表后面。

取时,首先计算被取元素的哈希值,然后计算其在数组中的下标,在下标中的链表中找到相同哈希值的元素,即可取出。

在jdk1.8之前,解决哈希冲突时采用的是拉链法,即直接使用链表。

1.8之后,解决哈希冲突,用红黑树。如果链表长度大于8,则扩容为红黑树;如果长度小于了6,则又退化为链表。

十四、什么是递归,有什么优缺点

递归:方法自己调用自己

优点:代码简介。

缺点:1.性能开销大;2.栈溢出;3.调试困难。

十五、IO流的分类

字符流、字节流

输入流、输出流

节点流、处理流

其中,文本用字符流,非文本数据、文件拷贝用字节流。

十六、多线程的实现方式

4种方式:

1.继承Thread

2.实现Runnable

3.实现Callable

4.线程池

十七、线程安全问题产生的原因、解决方案

产生原因

1.有多线程要并发

2.要操作同一组数据

解决方案

加同步锁synchronized

加锁Lock(jdk5之后)

十八、线程池的7个参数

1.corePoolSize 核心线程数

2.maxinumPoolSize 最大线程数

3.keepAliveTime 空闲线程的存活时间。

4.unit 存活时间的单位

5.workQueue 任务队列,存放被提交但是尚未被执行的任务。

6.threadFactory 生成线程池中工作线程的线程工厂。

7.handler:拒绝策略,队列、线程都满了时如何处理线程。

十九、UDP和TCP协议的区别

1.UDP无连接,速度快,安全性低,适合高速传输、实时广播通信等。

2.TCP面向连接,速度慢,安全性高,适合传输质量要求高、大文件等的传输,比如邮件发送等。

(还有:TCP只能是一对一的,UDP支持一对一、一对多、多对一)

(还有:TCP首部开销有20个字节;UDP分组首部开销小,只有8个字节)

二十、什么是反射

Java中动态获取类及类的成员、方法的技术。

框架的底层都用了大量的反射。

http://www.lryc.cn/news/121809.html

相关文章:

  • 防御第九次作业
  • Java刷题——代码随想录Day1
  • android,Compose,消息列表和动画(点击item的时候,就会删除)
  • go-admin 使用开发
  • 力扣的板子
  • 基于Matlab实现路径规划算法(附上15个完整仿真源码)
  • 纯跟踪(Pure Pursuit)路径跟踪算法研究(2)
  • 前后端分离------后端创建笔记(02)
  • Webpack5 Preload/Prefetch技术
  • PHP原生类
  • QGIS3.28的二次开发八:显示shp的属性表
  • 虚拟机安装 Ubuntu桌面版,宿主机无法访问虚拟机 ufw 防火墙简单使用
  • jquery发送ajax练习
  • adb用法,安卓的用户CA证书放到系统CA证书下
  • 【LVS-NAT配置】
  • 时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测
  • 注意:阿里云服务器随机分配可用区说明
  • 【Vue】使用print.js插件实现打印预览功能,超简单
  • 3.5 Spring MVC参数传递
  • linux程序保护机制gcc编译选项
  • 指针与引用:C语言中的内存魔法
  • docker desktop搭建 nginx
  • Redis缓存雪崩、击穿、穿透?
  • Kettle系列(一)下载安装与基础配置
  • MuMu模拟器运行一段时间后Device.Present耗时突然上升
  • 14-矩阵相乘及其运算法则
  • redis学习笔记(八)
  • Wlan——无线服务集和AP的基本概念以及AP的配置
  • 【必看】时序逻辑仿真成组合逻辑?你知道原因吗?
  • PyTorch翻译官网教程-LANGUAGE MODELING WITH NN.TRANSFORMER AND TORCHTEXT