华为OD面经

机试 370

1、五子棋找最优解,异常输入的场景一直有问题导致通过率只有80%,真没找到到底是什么输入怎么去处理都没处理好

2、三个长方形重叠部分的面积,非常简单,先求两个长方形的重叠部分,再与另外一个长方形求重叠部分就行了,100%通过

3、矩阵渐变,也挺简单的,试了两种方法,效率是上去了,但是用例还是只通过95%,没找到问题

一面

1、为什么要用消息中间件(解耦、削峰、扩展、异步等)

2、你设计一个消息中间件要考虑那些因素(可伸缩、高可用、持久化等)

3、如何实现消息消费幂等(定义唯一ID,利用redis中的set)

4、设计模式(主要问了单例,双重校验锁和基于类加载的线程安全的单例)

5、什么是双亲委派机制,如何打破

6、创建线程池的方式,哪种比较好,为什么(不要使用Executors去创建,而要使用ThreadPoolExecutor去创建,以为最大线程数和工作队列可能导致OOM

7、浅拷贝与深拷贝

8、DDD

9、set和map的区别(没get到面试官要问什么,后面问了fail-fast和fail-safe问题,如何在遍历过程种修改,说了copy一分遍历,或者用Iterater或ListIterator 的remove方法

10、spring种的事务

11、sql优化

12、手撕代码:两个数组中重复的元素,很简单双指针就可以解决(我忘记了怎么快速list转数组,被面试官点了)

二面

1、mysql的主从复制

2、redis和数据库的一致性问题

3、缓存击穿与缓存穿透,怎么避免

4、mycat分库分表

5、手撕代码:手写LRU,这个也挺简单的

反馈说两轮定级不一样,还得再面一轮,心累

6.8 补充3面

1、有没有遇到内存相关的问题,怎么解决

2、设计模式将一讲工厂模式和策略模式

3、HashMap的原理

4、JVM GC的理解

5、Thread类的start()方法和run() 方法的区别

6、String和StringBuilder的区别

7、redis是单线程还是多线程

8、线上问题定位过程

9、手撕代码:非减序列查找目标值 很简单

说一下整体感觉真的挺糟糕的,面试官的水平很随机,这个三面的面试官真的水平应该没我高

HashMap的原理?HashMap那么多内容,数据结构、扰动函数、扩容过程、put过程、get过程、线程不安全原因等等那么多内容,我怎么一一讲它的原理呢,这不半个小时过去了

同理还有GC

第5个还有第6个问题也过于基础了

redis单线程还是多线程,我说了网络IO是单线程、set和get等过程也是单线程完成的,但是持久化、主从同步是由另外的线程完成的,并且4.0版本新增了大数据的懒惰删除是异步线程处理的,6.0版本还支持了网络IO的多线程。我都不知道他知道还是不知道的

挺无语的

还有就是二面的手撕题LRU明显比一面和三面的要难不少

简直突出一个随机

全部评论
您好,是什么岗位
点赞 回复 分享
发布于 2023-06-19 11:51 北京

相关推荐

05-24 14:12
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
35
分享

创作者周榜

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