【校招VIP】华为OD,Java面经

05月06日 收藏 0 评论 0 java开发

【校招VIP】华为OD,Java面经

转载申明:文章来源:https://www.nowcoder.com/discuss/483593695200018432

2023-03-31 一面

1、有哪些集合

  • conlletion: set、list(arraylist, linkedlist) 、queue
  • map: hashmap、hashtable、treemap

2、什么情况下用什么集合
1.改查选择 ArrayList,因为数组能够随机访问,效率高
2.如果有先进先出特点的,就用queue
3.如果数据是一对一对的,可以考虑map
4.如果要求数据不重复,可以用set

3、多线程集合使用依赖哪些类
1.hashtable
2.concurrenthashmap
3.vector
4.stack

4、多线程下操作HashMap会有什么问题,这样通过什么类来实现
1. 1.7的就会出现扩容死链,链表next指针死循环
2. 1.7和1.8都容易出现数据错乱、丢失数据
3.可以使用线程安全的集合,例如hashtable、concurrenthashmap、stack

5、多线程实现方式,比较,使用场景
继承Thread类,实现Runnable接口,实现Callable接口
比较: 实现Runnable 接口比继承Thread 类的方式更好,避免由于Java单继承带来的局限性
使用场景:后台任务;异步处理;分布式计算

6、有哪些锁,怎么避免死锁
公平锁、非公平锁、可重入锁、独享锁、共享锁、互斥锁、乐观锁、悲观锁
避免死锁:
1.加锁顺序(线程按照一定的顺序加锁)
2.加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)
3.死锁检测

7、sql 怎么优化
插入优化
1.合并sql语句
2.在事务中进行插入处理
3.数据有序插入
查询优化
1.尽量使用索引,避免全表扫描 - 避免where 语句中判断null、使用不等于比较、使用or、使用函数等操作,这会导致全表扫描
2.不要用select * ,用具体字段替代
3.用 exists代替 in
4.尽量使用表变量来代替临时表
5.避免频繁创建和删除临时表

8、生产问题排查,举例说明
生产环境有相关监控,监控cpu、内存等信息,当过高时就会发送告警邮件
比如内存使用过高导致cpu满载
1.通过top命令查看负载高的cpu进程
2.进一步查找负载高的进程中的线程
3.然后导出内存日志,分析堆栈情况

最后一道算法题

构建一个实体类数组(没构建成功,经过面试官提示,加一个判断完成),然后自定义排序,结果通过

2023-04-01 技术二面

先一道算法题
给定一个含有 n 个正整数的数组和一个正整数 target 。
找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。

双重循环暴力法通过,面试官提示可用前缀和优化

1、运维、开发、测试 更喜欢哪个?
开发,比较有挑战性

2、java相关的技术了解哪些?
redis、rabbitmaq

3、项目中什么场景使用rabbitmq?
异步处理
场景:用户注册,用手机号注册,填写信息后发送短信验证码,填写验证码后注册成功。
应用解耦
场景:用户下单后,订单系统需要通知库存系统

4、rabbitmq 和 kafka的 区别
没说上来

5、数据库有了解嘛?说一下mysql索引?
1.主键索引
2.唯一索引
3.普通索引
4.空间索引
5.全文索引

6、在做数据库查询时有没有遇到过性能瓶颈?
select 字段和索引顺序不一致,导致oom

7、怎么做优化
查询优化: 尽量使用索引,避免全表扫描
避免where 语句中判断null、使用不等于比较、使用or、使用函数等操作,这会导致全表扫描
插入优化:
1.合并sql语句
2.在事务中进行插入处理
3.数据有序插入

8、mysql 中用 #{} 和 ${} 的区别?
#{}是预编译、是一个占位符
${}是字符串、是一个拼接符。
使用#{}可以有效地防止SQL注入,能够提高系统安全性

10、java设计模式有了解嘛,说一下?
⼯⼚模式、单例模式、匹配者模式

11、什么情况适合用单例模式?
1.有频繁实例化然后销毁的情况,也就是频繁的 new 对象,可以考虑单例模式;
2.创建对象时耗时过多或者耗资源过多,但又经常用到的对象;
3.频繁访问 IO 资源的对象,例如数据库连接池或访问本地文件;

12、对springBoot 依赖注入有了解嘛?
依赖注入是指在Spring创建对象的过程中,把对象依赖的属性注入到对象中
不用自己去创建对象,但必须描述怎么创建对象,在配置文件中配置哪些组件需要哪些服务
会有ioc容器自动将它们装配到一起


二面发挥不好
2023-4-4 HR面:

先自我介绍,然后问了下工作情况和一些基本信息,最后问了期望薪资

2022-4-6 技术三面:

先一道算法题

dfs 遍历,找不到就回退上一步,继续找,直到找到,面试官后面给一组用例,全部通过
然后问一些八股文,然后深入到项目,具体问题忘了


2023-4-13 主管面

主管忙,比较难约,过了一周才面上
问些个人信息、离职原因、之前工作相关、加班的一些问题

C 0条回复 评论

帖子还没人回复快来抢沙发