2023.4.27彩智科技一面

java中常用的集合有哪些?

集合有两个接口 Collection map

collection 的下面包含list和set list是有序集合 set是无序集合

map存储的是key-value

arraylist 是list的主要实现类 底层有Object数组存储

Vector 是list的古老实现类 底层用Object数组存储 线程安全

arraylist和LinkedList的区别

ArrayList的扩容机制

  1. List:有序集合,元素可以重复。常见的实现类有 ArrayList、LinkedList 和 Vector。
  2. Set:无序集合,元素不可重复。常见的实现类有 HashSet、TreeSet 和 LinkedHashSet。
  3. Map:键值对映射集合,键不可重复,值可以重复。常见的实现类有 HashMap、TreeMap 和 LinkedHashMap。

线程安全的集合?

Fail-fast fail-safe

Vector HashTable CopyOnWriteArrayList

  1. ConcurrentHashMap:线程安全的哈希表,支持高并发访问和修改操作。
  2. CopyOnWriteArrayList:线程安全的列表,支持并发读取和写入,写入时会对整个数组进行复制,因此写入操作性能较低。
  3. CopyOnWriteArraySet:线程安全的集合,基于 CopyOnWriteArrayList 实现,支持并发读取和写入,写入时会对整个数组进行复制。

为每个方法添加了synchronized关键字,来实现的线程安全,锁住了整个对象。

sql优化

1.避免使用select*

2.分页优化

3.避免使用多表join

根据阿里巴巴开发者手册的规定,join表的数量不应该超过3个。

解决办法:

1.单表查询后在内存中自己做关联(拆分后的单表查询代码可复用性高,单表查询更有利于后续的维护)

2.数据冗余

4.建议不要使用外键与级联(对分库分表不友好)

5.选择合适的字段

a.将IP地址转换为整型数据

b.对于非负型的数据(如直增ID,整型IP,年龄)来说,优先使用无符号整型来存储

c.小数值类型(比如年龄、状态表示如0/1)优先使用TINYINT类型

d.对于日期类型来说,DateTime类型耗费空间更大且没有时区信息,建议使用Timestamp.

e.金额字段用decimal,避免精度丢失

f.尽量使用自增id作为主键

6.尽量用UNION ALL代替UNION

7.批量操作

8.Show Profile分析SQL执行性能

9.优化慢SQL

9.正确使用索引

a.选择合适的字段创建索引

1.不为NULL的字段

2.被频繁查询的字段

3.被作为条件查询的字段

4.频繁需要排序的字段

5.被经常频繁用于连接的字段

b.被频繁更新的字段应该慎重建立索引

c.尽可能的考虑建立联合索引而不是单例索引

d.注意避免冗余索引

e.考虑在字符串类型的字段上使用前缀索引代替普通索引

f.避免索引失效

g.删除长期未使用的索引

Sql执行顺序

基础Sql优化

查询SQL尽量不要使用select *,而是具体字段

避免在where子句中使用or来连接条件

使用varchar代替char

尽量使用数值替代字符串类型

查询尽量避免返回大量数据

使用explain分析你SQL执行计划

是否使用了索引及其扫描类型

创建name字段的索引

优化like语句:

字符串怪现象

索引不宜太多,一般5个以内

索引不适合建在有大量重复数据的字段上

where限定查询的数据

避免在索引列上使用内置函数

避免在where中对字段进行表达式操作

避免在where子句中使用!=或<>操作符

去重distinct过滤字段要少

where中使用默认值代替null

高级SQL优化

批量插入性能提升

批量删除优化

伪删除设计

提高group by语句的效率

复合索引最左特性

排序字段创建索引

删除冗余和重复的索引

不要有超过5个以上的表连接

inner join 、left join、right join,优先使用inner join

in子查询的优化

尽量使用union all替代union

————————————————

版权声明:本文为CSDN博主「笨笨杨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_53601359/article/details/115553449

sql搭建集群

MySQL主从复制

springmvc

springboot

spring常见的注解

项目做了什么?

答的很差,后面说我水分太大

全部评论
找到一篇好面经,还有答案
点赞 回复 分享
发布于 2023-06-09 09:02 浙江
北京的彩智科技对吧
点赞 回复 分享
发布于 2023-06-12 08:15 北京
你好 想问一下 是面试的Java实习生嘛
点赞 回复 分享
发布于 2023-09-27 18:54 山东

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
1 12 评论
分享
牛客网
牛客企业服务