美团|一年经验Java程序员,面试18K华为OD岗位的真实过程( 二 )


这是JVM最常问的两个内容了吧 。
内存分配策略影响垃圾回收机制 , 用GCRoot进行可达性分析找到需要回收的对象 。 然后在不同的分代区域运用不同的垃圾回收算法 。 为什么要对堆空间进行分代划分 , 三条分代假说理论支撑 。
类加载 , 沙箱安全策略 , 加载链接初始化都干了什么 , 链接的三个小步骤分别又干了什么 。
《深入理解Java虚拟机》 , 多看几遍 , 面试问这些就不虚了 。
2、Mybatis和JPA 项目配置连接
(我没回答好 , MyBatis就不该写在简历上 , 没看过源码 , 但是不写有怕简历被筛掉 , 机会都没有)
数据库连接源还好 , 连接资源复用 , 几个参数还是记得的 , 只是底层的一些东西我就不知道了 , 得好好补一补这些了 。
3、Redis
这个也是常问的 , 这次主要问了 缓存、分布式锁怎么实现的、基本数据类型 。
但是Redis能问的实在是太多了 , 缓存雪崩、击穿、穿透 三连 , 持久化 , 集群 , 分布式锁 , 双写一致性 , 布隆过滤器 , 这些是我知道的 , 底层很多东西我都不知道 , 跳跃表 , 哈希表实现那些 。
4、之后是一个场景模拟题:假设现在并发很大 , 怎么去保证数据库安全
我回答:
首先在服务层面设置限流或者熔断机制 , 配置一些限流规则 , 优先保证核心功能可用 。
之后对读写情况redis该怎么做 , 读那就缓存基本能搞定 , 写的话就有缓存大批量更新的问题 , redis怎么做才撑得住 。
之后是数据库层面怎么做 。
(反正我觉得我回答的不是很好)
5、之后是算法题
算是比较简单吧 。 一个数组找最大的K个 。 口述那就更简单了 。
堆排序 。
(我是这样的 , 如果是学校里面学的数据结构 , 算法啊这些我可能还会一点点 , 但是比较高级的就是纯粹懵掉的那种 。 因为当时比较叛逆 , 没想着在课上好好学这些基础的东西 , 只好好上那些找工作要用的课 , 当时也不知道这些课其实很重要 , 所以现在只能恶补)
6、然后是内存泄露 。
奈何我答个稀烂 , 我以为是OOM 。 等我反应过来的时候就......
然后追着我问netty的线程模型 , 我只我勉强还记得两个线程组实现异步处理 , 一个负责监听连接事件 , 一个负责处理其他事件 。 之后问我怎么实现监听的 , 后面她说有几个方法怎么怎么做 , 我就好像想起来一点了......(真太久了 , 记不得了 , 也是答个稀烂)
7、然后问 hashcode 我也没有答好 , 我只说在对象头里面存放的hashcode , 是懒生成的 , 用来判定对象相等 , 但是大部分情况是比较地址值 。
之后我看了一下 , Object类的hashcode是用native方法生成的 , 是用地址值 , 而散列集合的hashcode是被重写过的 , 以所有key的hashcode之和作为自己的hashcode 。 我猜她想问的是这个 。
8、然后问我HashMap , put和resize的过程肯定是必问的 , 这个我还是ok的 。 后面问ConcurrentHashMap , 也还行 。
整个过程40分钟左右 , 中间网络不好断了一次电话 , 可能是她不小心电话挂掉了 。
整体感觉这次是筛选人的面试 , 比较基础 , 不是很深 。 回答问题的时候不会打断我 。 网络不好 , 都没听清楚一些问题 , 我也让她再说一遍 。 回答完也会停顿几秒 , 然后我回答的不是很清楚的简短的给我回答一下 。 整体感觉还是很nice的 。
华为的到这里就完了吧 , 到现在都没有通知 , 笔试到面试我等了一个月 , 大厂的周期真的很长 。

文章来源:
程序员汪
https://mp.weixin.qq.com/s/p1HvwLfYoXCK4e16rnMQtw
以上就是华为Java技术岗面试总结 , 以下是我个人总结的2020互联网大厂常问的面试题(含答案) , 全部刷完面试大厂通过率极高 , 当然得看工作年限及个人能力 。