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常见的注解

项目做了什么?

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

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

相关推荐

水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
06-27 12:54
已编辑
门头沟学院 Java
累了,讲讲我的大学经历吧,目前在家待业。我是一个二本院校软件工程专业。最开始选专业是觉得计算机感兴趣,所以选择了他。本人学习计算机是从大二暑假结束开始的,也就是大三开始。当时每天学习,我个人认为Java以及是我生活的一部分了,就这样持续学习了一年半,来到了大四上学期末,大概是在12月中旬,我终于找的到了一家上海中厂的实习,但我发现实习生的工作很枯燥,公司分配的活也不多,大多时间也是自己在自学。就这样我秋招末才找到实习。时间来到了3月中旬,公司说我可以转正,但是转正工资只有7000,不过很稳定,不加班,双休,因为要回学校参加答辩了,同时当时也是心高气傲,认为可以找到更好的,所以放弃了转正机会,回学校准备论文。准备论文期间就也没有投递简历。然后时间来到了5月中旬,这时春招基本也结束了,然后我开始投递简历,期间只是约到了几家下场面试。工资也只有6-7k,到现在我不知道该怎么办了。已经没有当初学习的心劲了,好累呀,但是又不知道该干什么去。在家就是打游戏,boss简历投一投。每天日重一次。26秋招都说是针对26届的人,25怎么办。我好绝望。要不要参加考公、考研、央国企这些的。有没有大佬可以帮帮我。为什么感觉别人找工作都是顺其自然的事情,我感觉自己每一步都在艰难追赶。八股文背了又忘背了又忘,我每次都花很长时间去理解他,可是现在感觉八股、项目都忘完了。真的已经没有力气再去学习了。图片是我的简历,有没有大哥可以指正一下,或者说我应该走哪条路,有点不想在找工作了。
码客明:太累了就休息一下兄弟,人生不会完蛋的
如果实习可以转正,你会不...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
12
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务