华为OD社招Java岗面经,已OFFER

Posted 等风来.长

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为OD社招Java岗面经,已OFFER相关的知识,希望对你有一定的参考价值。

【一面】

HR跟我沟通说360的分数很不错,我内心还挺高兴,结果估计是华为对我期望太高,一轮面试难度很高,GG

面试官问的知识点比较分散,而且相对挺深入的,我无言以对,尴尬ing。

1、对类加载机制有了解吗?答:有了解,加载-连接-初始化 初始化顺序是...巴拉巴拉

2、单例模式了解吗?答:了解,巴拉巴拉

3、那么两个类加载器加载同一个单例类,会有几个对象?答:不懂,但是我猜只有一个,因为单例的定义是只有一个实例

面试官:你回去好好研究一下这个问题      我:好吧.....

4、JVM调优参数你了解那些?答:没听说过...

5、JVM报错信息你有了解过吗?答:看过报错日志,其他都不了解

6、OOM错误会输出报错日志吗?堆内存溢出会输出报错日志吗?我内心:这都啥玩意  答:不知道

7、多线程锁你用过那些?答:synchronized关键字,LOCK锁(我有点被问蒙了,cas、乐观悲观、公平非公平都了解一点,害怕面试官追着问,没敢说)

8、Redis用过没有?答:没用过 但是我正准备学习

9、用过事务吗?答:用过,声明式使用(内心:终于有个会的了,快问我事务隔离级别、传播机制、MVCC       结果,面试官看我回答的很简略,没有追问  提醒大家,如果自己会,一定要表现出来!)
10、讲一下HashMap为啥重写Hashcode和equals?答:巴拉巴拉

手撕编程题:mid难度,涉及到特别多的进制转换和int与char、String的类型转换,但是我已经被问懵了,写的磕磕巴巴的,手一直抖,打错字。最后勉强运行一下测试样例通过了我就直接说做完了。

面试官:你觉得你的程序那里还可以优化?我内心(完蛋,估计程序不对) 答:可能输入没进行非法校验,各种进制转换、类型转换写的也很生硬 巴拉巴拉

【二面】

估计是一轮面得不太好,二轮面试难度明显降低。

二轮面试官人很好,如果问到我不会的,他会自己回答问题的答案。

主要问题就是按照简历上写了什么,就挨个问,偶尔几个问题会深入的问一下,写几个简单的例子。

1、你简历上写了巴拉巴拉,你在工作中是怎么用的?答:我在工作中巴拉巴拉

2、对于这个功能,他是怎么实现的,用了什么原理?答:如果懂,就是底层使用了什么巴拉巴拉,如果不懂,就回答我只会用,对原理不太了解

3、我看你写了了解springboot,你使用springboot第一感觉是啥?答:简便快捷,因为约定由于配置巴拉巴拉,结尾我说了一句在POM文件中引入依赖很方便

面试官:嗯,POM引入依赖是maven的功能,你说一下你对maven的了解   我:巴拉巴拉

4、你简历上写了你了解mybatis,简单说一下mybatis和JDBC有啥区别?我:mybatis实现了java代码和sql的解耦,功能强大,使用相对来说比JDBC简单,mapper接口不用写实现类

追问:为啥不用写实现类就可以获取实例?答:这是典型的代理模式的应用

5、对于sql安全,你了解那些?  答:在使用时注意sql注入问题,能使用#的情况下就不要使用$,然后讲了一下#不能使用的几种情况

6、对于sql优化,你了解那些?  答:分三个层面,1.对sql优化,去除冗余列 2.索引层面,查看sql是否使用索引,索引是否生效 3.前两部都没问题,是否考虑分表?或者将压力分散到多个服务器上

7、工作中使用过多线程编程吗?答:没有

8、接触过多线程实际案例?答:接触过,大学中经典的生产者消费者模型,里面用了锁来控制县城的通信

9、讲一下你用过和了解的锁?答:synchronized关键字,LOCK锁,cas自旋,还说了一些关于降低锁粒度可以提升效率

10、讲一下cas 答:cas就是compare and swap,简单说了一下cas的过程

11、简历上写了JUC,讲一下你对JUC的理解  答:JUC是jdk为我们提供的一个用于多线程编程的包,提供了线程安全且效率较高的集合实现类 ConcurrentHashMap、CopyOnWriteArrayList还提供了三个辅助类

12、Redis有了解吗?答:没有,但我正准备学

手撕编程题:easy难度,一道滑动窗口。面试官先让简单讲一下思路  答:题目中说明了有序和非空,应该是经典的滑动窗口问题

面试官:那你简单写一下吧。  花了十几分钟,写了一个不伦不类的滑窗,注释什么写的很整齐,代码还算优雅。

面试官:你这实际上是个穷举啊   答:是的,左边界用外层循环移动,右边界内层循环滑动,虽然写出来是穷举,但是应用了滑窗的思想

面试官:嗯,你说的思想是滑窗的思想  答:滑窗将抽象的算法以具体的方式展示,便于理解巴拉巴拉

【HR面】

这两面问的都差不多。合在一起写。

主要问题:

1、离职原因 

2、个人情况,包括是否婚恋,对于去外地工作有什么想法

3、对于加班有什么看法

4、你还有什么想了解的

总结

我个人双非一本计算机专业,本科。毕业之后进了一家“老”公司做政府业务,干了1年半多一点,用的都是stuts2+jsp,技术栈相当落后,自我觉得再混下去要被淘汰了,所以裸辞换个环境。

由于没有用过springboot、springcloud、redis、mysql、mybatis等等,简历上只能写对于这些技术有所了解,我每自学一门技术,就把他填到简历上。

面试的时候还是很心虚的,因为只写了对这些技术有了解,自学能力强,但是没有这些技术的项目经验,深入问原理也答不上来。

一轮面试感觉真的很难,别说我根本没用过这些,即使用过,也未必见得能了解其中原理,同时考验了技术的宽度与广度。

二轮按照简历上写的进行由浅入深的提问,由于刚自学过,回答的还算顺畅,我不清楚二面难度降低究竟是好事还是坏事,可能是一面太菜,二面挽尊。

分享一下我的经验,希望能谈个好薪资。

腾讯社招Android 岗面经分享,侥幸斩获Offer

作者:海能

背景

笔者双非本科,18年毕业,学历背景一般,由于个人家中有事,不得已从上家公司裸辞了,处理好家中的事情后,蹦着换个环境的想法,直接奔向深圳,开启了一次的新的求职之旅,再投简历的同时,自己在网上收集整理一些面试时容易被面试到的知识点进行复习,在文末会分享给大家。本次就来分享一下我在腾讯的一段面试经历。

如何准备面试呢?面试的注意事项有哪些呢?

下面是我总结的一些准备面试的Tips以及面试必备的注意事项

1.准备一份自己的自我介绍,面试的时候根据面试对象适当进行修改(突出重点,突出自己的优势在哪里,切忌流水账);

2.注意随身带上自己的成绩单和简历复印件; (有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考。)

3.如果需要笔试就提前刷一些笔试题,大部分在线笔试的类型是选择题+编程题,有的还会有简答题。(平时空闲时间多的可以刷一下笔试题目(牛客网上有很多),但是不要只刷面试题,不动手code,程序员不是为了考试而存在的。)另外,注意抓重点,因为题目太多了,但是有很多题目几乎次次遇到,像这样的题目一定要搞定。

4.提前准备技术面试。 搞清楚自己面试中可能涉及哪些知识点、那些知识点是重点。面试中哪些问题会被经常问到、自己改如何回答。(强烈不推荐背题)
第一: 通过背这种方式你能记住多少?能记住多久?
第二: 背题的方式的学习很难坚持下去!

5.面试之前做好定向复习。 也就是专门针对你要面试的公司来复习。比如你在面试之前可以在网上找找有没有你要面试的公司的面经。

6.准备好自己的项目介绍。 如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:

①对项目整体设计的一个感受(面试官可能会让你画系统的架构图;
②在这个项目中你负责了什么、做了什么、担任了什么角色;
③ 从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用;
④项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:Android Bitmap压缩策略;关于HandlerThread的使用场景以及怎样使用 HandlerThread?

提前知道有哪些技术问题常问: HashMap源码分析、热修复,handler等等问题我觉得面试中实在太常见了,好好准备!后面的文章会我会分类详细介绍到那些问题最常问。

提前熟悉一些常问的非技术问题: 面试的时候有一些常见的非技术问题比如“面试官问你的优点是什么,应该如何回答?”、“面试官问你的缺点是什么,应该如何回答?”、“如果面试官问"你有什么问题问我吗?"时,你该如何回答”等等,对于这些问题,如何回答自己心里要有个数,别面试的时候出了乱子。

6.面试之后记得复盘。 面试遭遇失败是很正常的事情,所以善于总结自己的失败原因才是最重要的。如果失败,不要灰心;如果通过,切勿狂喜。

面试过程

腾讯一面

1.mmap + native 日志优化?
2.广播和 EventBus 的区别?
3.常用设计模式你了解哪些?
4.跨进程通信有哪些?
5.简单讲讲 binder 驱动吧?
6.跨进程传递大内存数据如何做?
7.说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
8.启动优化怎么优化?
9.你写的 rxpay 和 rxlogin 具体怎么实现的?
10.kotlin + fullter 方面的

腾讯二面

1.单例设计模式都写写,静态内部类是怎么保证线程安全的?
2.synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
3.主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
4.自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按时间分别是怎么实现的?
5.四种启动模式,在源码分析中的原理是怎样的?
6.讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
7.开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?

腾讯三面

1.讲讲 handler 的底层实现原理?
2.说说你做的日志记录优化?
3.你看过 binder 驱动的源码,说说他的内存映射过程,说说客户端等待服务端处理返回的流程,如果要跨进程传递大内存数据你具体会怎么做?简单写一写吧。
4.在公司做过哪些优化?
5.过程中遇到的一些最难解决的问题?
6.提到了动态修复替换加载 so ,那你知道怎么修复 class 吗?怎么修复资源呢?
7.还有什么要问的?

总结

这次面试问的还是挺多挺全的,像日志、广播、设计模式、进程通信、Binder、自定义控件、启动模式、handler等等都有问到,但对于这些问题都在我之前收集到的一些面试题中都有遇见过,于是自己综合了一些参考答案进行了解答,所以这次面试能够顺利通过有一半的功劳在于这份面试学习文档。如果大家想要参考这份面试学习文档进行学习的,可以直接去我 CodeChina地址:https://codechina.csdn.net/u012165769/Android-T3 中访问查阅。


以上是关于华为OD社招Java岗面经,已OFFER的主要内容,如果未能解决你的问题,请参考以下文章

社招4年,朋友内推二线大厂Java岗面经

腾讯社招Android 岗面经分享,侥幸斩获Offer

2021.8.9美团实习Java岗面经,已拿offer!

华为OD(外包)社招技术二面,总结复盘

腾讯助理PHP开发工程师外包岗面经

2021年Android开发岗面经汇总(腾讯网易哔哩哔哩等)