续集
是下面文章的续集,出来面试的遭遇
一本粉丝
先说我的情况,双非一本,19年毕业,计算机专业,只过四级,刚刚一年经验。互联网的项目,只是在银行干过一小段时间,还是实习,之后就是业务型的增删改查公司,传统行业。(总的来说就是要啥没啥,根本没有吸引眼球的地方,运气好可能才会保证简历不被筛掉的那种)。然后梦想就是去大厂,虽然是程序员,但是真的跟互联网没什么关系的那种,天天CRUD,所以想尽早去,不想一个经验用三年。也只想去杭州,因为杭州整体氛围就很好,比起北上广,我觉得在杭州可能会更容易一些。
我从3月份之后就一直在关注杭州的一些公司的岗位要求。很多公司都卡经验,甚至一些外包公司都在卡,去年都还不是那么严重。所以只能找一些偏外包的岗位去试试,这些岗位不怎么卡经验。不过从6月份之后就好一些了。今年,是真的不容易!很多岗位上都直接说:18年之后的毕业生勿扰。有时候都约了面试时间,突然一个电话打过来,不好意思,19年的毕业生不考虑,就是这么现实。能去大厂的机会真的不多。
华为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 再输入两个字符串(用逗号隔开)
4,5,4
5,4,5
然后输入操作的步骤数目
比如说是2,每一次输入标志了上面二维数组里面的两个数字
0,0,0,2 00代表了第1行第一列的4 02和第一行第三列的4
(如果这两个数字能用三根短线连起来,并且相等,那么就把这两个位置上的数字变成0)
1,0,0,1 同上(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的。
华为的到这里就完了吧,到现在都没有通知,笔试到面试我等了一个月,大厂的周期真的很长。
最后送3本书给粉丝
参加抽奖 关注的粉丝 点击进入抽奖页面