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

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

文章图片

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

文章图片

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

文章图片

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


先说我的情况 , 双非一本 , 19年毕业 , 计算机专业 , 只过四级 , 刚刚一年经验 。 互联网的项目 , 只是在银行干过一小段时间 , 还是实习 , 之后就是业务型的增删改查公司 , 传统行业 。 (总的来说就是要啥没啥 , 根本没有吸引眼球的地方 , 运气好可能才会保证简历不被筛掉的那种) 。 然后梦想就是去大厂 , 虽然是程序员 , 但是真的跟互联网没什么关系的那种 , 天天CRUD , 所以想尽早去 , 不想一个经验用三年 。 也只想去杭州 , 因为杭州整体氛围就很好 , 比起北上广 , 我觉得在杭州可能会更容易一些 。
华为OD面试华为OD岗位:
OD岗位就是那种外包性质的岗位 , 不过我面的这个岗位上说是 同工同酬 , 编制在德科 , 所以如果面过了就只算半个华为人吧 。
为什么不直接去面正式员工的岗位?没机会!
面试流程是很规范的 , 如果是约线上电话面试会跟你打电话提前确认时间 。
笔试也是有一段时间去准备的 。
先是一次机试 , 时间比较宽裕 , 应该是从题库里面随机出的三道题目 。 应该只要总体分数过了70分左右就可以面试了(100分制的话) 。 自己估计一下就好了 。 比如我的是两个简单的 , 和一个稍微难一点的 , 我就把两个简单的做了 , 难的那个保证有个40%左右的通过率就好了 。 (当然这是我这种算法和数据结构比较渣的同学就可以用这种办法了 , 大神就随意啦)
我的机试题目:
题目一:
1、输入小明的身高和他们班其他小朋友的个数
比如 100 5
2、输入这5个小朋友的身高 中间用空格隔开(身高的范围是0-200)
98 99 100 101 102
输出
按照跟小明的身高差去排序 , 身高差相同 , 个子小的排在前面
100 99 101 98 102
题目二:
输入一个字符串 和一个标志
例子: aA1bB2cC3 1
假如这个标志是 1 就把字符串中小写字母反转输出 cA1bB2aC3
假如这个标志是 2 就把字符串中大写写字母反转输出 aC1bB2cA3
假如这个标志是 3 就把字符串中数字的位置反转输出 aA3bB2aC1
题目三:
先输入一个行数
比如说是2 再输入两个字符串(用逗号隔开)
454
545
然后输入操作的步骤数目
比如说是2 , 每一次输入标志了上面二维数组里面的两个数字
0002 00代表了第1行第一列的4 02和第一行第三列的4
(如果这两个数字能用三根短线连起来 , 并且相等 , 那么就把这两个位置上的数字变成0)
1001 同上(10是5 01也是5)
如果输入的多组操作 , 都能正常完成数字的消除 , 就返回0k
如果有一组操作存在错误 , 就返回这个操作的下标 。
分析错误的原因:操作里面指明的位置在二维数组里面没有下标越界 , 两个下标的值不相等 , 或者就是不能用三个短线把这两个数连起来
之后是线上面试 , 原本说是视频面试的 , 因为华为好像当场要手写算法 。 但是后面又改成了电话面试 , 口述算法实现思路 。
1、JVM的垃圾回收机制 , 后面是类加载子系统(这两个问题我还ok)
这是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互联网大厂常问的面试题(含答案) , 全部刷完面试大厂通过率极高 , 当然得看工作年限及个人能力 。
转发+关注 , 然后私信回复 “面试” 即可获得【2020互联网大厂常问面试题(含答案)】文档资料的免费领取方式 。


多线程面试题整理

MySQL面试题整理

Redis面试题整理

Spring面试题

【华为|一年经验Java程序员,面试18K华为OD岗位的真实过程】还有很多就不一一列出来了 , 转发+关注 , 然后私信回复 “电子书” 即可获得【2020互联网大厂常问面试题(含答案)】文档资料的免费领取方式 。


    推荐阅读