首页 > 公司主业务线转移,离职后收割小米,字节跳动Android研发岗Offer

你被公司录用了在线生成器,公司主业务线转移,离职后收割小米,字节跳动Android研发岗Offer

互联网 2021-02-28 14:29:54
花絮花絮

本文为完整版,加了一些彩蛋哦!文末有面试和必备的技能点总结。

也许会有人感叹某些人的运气比较好,但是他们不曾知道对方吃过多少苦,受过多少委屈。某些时候就是需要我们用心去发现突破点,然后顺势而上,抓住机遇,那么你将会走向另外一条大道,成就另外一个全新的自我。

先简单说说我最近的面试经历吧。面试的公司很多,其中有让我心血沸腾的经历,也有让我感到失望到无助的经历,我将这些体会都记录下来,细想之后很值得,面了这么多公司,要是最后什么也没有留下来,那就太浪费了。至少对于我来说有些东西在整理总结之后才能得到一个肯定的答案。希望这些能对即将换工作或者打算看看机会的你有一些帮助。

下文真的很长,你可以把这篇文章当做看小说一样,快速浏览一下,但是希望你能将文中提到的那些技能掌握。那也就不枉费我花了一两天时间专门整理这些。我的这些经验仅供参考,希望你能做的比我好,同时希望你在以后的面试中能轻松应对。为何离职?

先从我的换工作的动机开始说吧。

公司裁员的时候老大说:『你就留下好好干吧,以后不管公司怎么分股票、期权,肯定少不了你』。我非常信任我的老大,跟着老大一起工作,感觉是一种享受。

但是没想到疫情裁员后,公司内部大动荡,主业务线从客户端A 业务线转移到另外的B 业务线上。我主要负责A客户端的架构,这下可真闲下来了。B 业务线那边的业务量还是很忙的,没时间配合我做一些架构上的事情。于是我每天就看看资料,补充点能量。

呆了几天后,就后悔当初没有拿 N+1 走,有一种被老大忽悠的感觉。 因为公司接下来的操作让我很是不爽,先是晚上打车不能超过30,然后福利大减,瞬间没有工作的心情了。再过了一两周后公司宣布新一轮融资成功,可惜只融到了 2千多万美元(按照预期应会更高),然后接着招新人。

我特么无语了,站在公司的角度是没有任何问题的,可以节省开销,也可以容纳新鲜血液。但是我作为一个老员工,心寒,走的员工都拿到了 N+1,我们这些老员工什么也没有得到,反而福利大减,伤人啊! 现在即使我想走,什么也得不到,一种莫名的恼火涌上心头(只怪本人经历尚浅,看不清一些大的趋势,还是老鸟们聪明,拿钱走人,然后换一个新工作,好不自在啊)。

不过理智分析一些这样确实有好处,可以给自己留很多的时间来选择更好的公司。就如此刻的我一样,在公司悠闲的上着班,骑驴找马,遇到合适的,可以立刻走。其实细想一下,如果我当时拿了 N+1 走了后,可能会迫切的需要一份合适的工作,然后迅速入职。至于新公司怎么样,还真不敢确定。

已经动了想走的心,意味着再也不可能在这里很安分的待下去了。

面试准备

整体分为以下两个方面:

自我介绍 & 项目经验知识储备自我介绍

1、结合招聘岗位,只讲重点。

简历内容这么多,实际的你,更有很多很多可以描述的东西。但时间有限,没有面试官会听你说个没完。

根据你求职的岗位,说重点即可。

其实简历制作的原则,也是一样。只是自我介绍时间更短,内容更精华。

2、有理有据,少说空话。

如果你说“自己学习能力强”,这就是一句假大空的话。谁都可以说自己学习能力强。

你如果真的在这方面有突出,就要举一个例子,比如是1个月从0到1考了什么证书等。

3、有开头有结尾,有逻辑。

开头问候,结尾总结。中间1、2、3条理清楚。

4、特别提醒。

自我介绍中的内容,很可能是面试官后续发问的内容。所以,一是要引起重视,讲最重要的,你最想让面试官知道的内容。 而是做好准备,扬长避短,不要给自己挖坑。

比如前面你说自己学习能力强,但是没有举例子。

面试官很可能,顺着你的话问你,怎么证明你学习能力强呢? 结果你答不上来,或者是非常普通的成绩,根本不能算是“学习能力强”。 那你就是给自己挖坑了。

其实自我介绍也是每个人各有不同,说起来也只能提供大致的思路。和你具体的求职岗位、经历、个人风格有很大的关系。

项目经验

项目经验这块因人而异,把觉得做的有亮点的东西挑出来,从四个方面来准备:

功能模块的实现达到了什么效果遇到了什么问题,是如何解决的涉及到的相关知识点

项目经验和知识点 其实是一个双向的过程,要 试图去找到它们之间的联系:

谈到项目经验的时候,可以说:做完 xx 之后,我还去了解了一下 yy 背后的原理,xxx,这里体现的是 你是否有求知欲 。谈到知识点的时候,可以说:yy 的原理是这样的,在 xx 项目中我是如何应用它来解决问题的,这里体现的是 你是否具备把知识付诸实践的能力。知识储备

很多人准备面试的时候,大多数就会这样的,打开牛客网,查找 “Android 面经”,找几个多的开始看。以及从各大技术交流平台搜索Android面试题。开始刷题复习。

这虽然看起来很自然,但是并不是一种 健康的方式,面试题的作用应当是查缺补漏,上学的时候也不是直接发习题册然后对着答案学习吧?

知乎上有个问题,叫做 如何高效学习,里面有一个回答我觉得很符合我自己的观点,就是 建立起自己的知识体系,建立知识体系的目的在于:

巩固记忆。认识自己,找到自己的优势及不足。把握复习的进度。经验总结。

目前我参考和自己整理的总结的会分为以下几个大点:

(1)java面试题(2)Android面试题(3)混合开发面试题(4)高端技术面试题(5)非技术性问题&HR问题汇总

面试经历 1.小米

一面、二面面试题

1.介绍一下binder和原理2.measure layout draw流程,滑动冲突3.常用的多线程工具类。blockingqueue ,concurrenthashmap,信号量,countdownlatch,cyclicbarrier,exchanger等,stringbuffer4.stringbuilder 和stringbuffer区别5.lock和syncrognized原理区别,适合什么场景。6.实现生产者,消费者7.handler原理,是如何实现延时的。8.一个activity启动另外一个activity的生命周期。

算法题:

1反转链表2.归并排序3.快速排序4.feiboqiena数列5.二分查找6.两个队列实现栈7.两个栈实现队列8.判断链表是否成环,找到成环的交点。

最终顺利通过hr面拿到offer。

2.阿里2.阿里

这次面的是一个阿里钉钉面经如下:

阿里一面(面试时长80min)

自我介绍,对自己项目的介绍,架构图呈现因为说自己以后的发展方向是音视频,所以问了我用过哪些现有框架项目中的一些优化问题,MVC -> MVP,Handler的内存泄漏情况分析等,对MVP和MVVM的理解。项目中的第三方库选择的问题,因为简历中写了我对第三方库选择的问题,比如选ObjectBox和greenDao的问题,图片加载框架问题HashMap和HashTable,引申ConCurrentHashmap的深入,version1.7和1,8的区别,以及高并发下HashMap发生的问题四大启动模式,以及场景对应Handler的机制介绍,不存在消息时的IdleHandler的运作机制,为什么不能在子线程初始化问题设计模式中的单例介绍,使用场景(Okhttp的Seesion存储等等),在线编写快排算法OkHttp的源码分析,及整体架构的流程图绘制四大组件的完整介绍,及深入,答了IntentService、LocalBroadcast四大引用的问题和MVP框架相结合进行回答网络中的响应码对大体进行回答,具体回答了200、404、500、304等View绘制流程问题,如何不使用xml,来实现中间位置的定位事件分发机制流程讲解,以及如何实现单击事件和长按事件的判定关于为什么选用mqtt协议的问题,优势,原理等等(没答上来,只说针对性做过测压,以及oceanlink和mqtt的对比)

阿里二面

自我介绍,优缺点的,以及未来希望的发展方向目整体介绍,如何做到分压啊之类的问题如果给我阿里、腾讯、头条、谷歌的offer的一个选择(不掺杂地域性的问题),首先直接否定了google我就的一个企业的商业模式进行分析。我对钉钉这个产品的理解,我的回答是就的是钉钉前身的对标项目微信,已经后期转型的商业模式作出的分析,最后给出的我的结论是一个企业性质的办公软件给出了钉钉一个mac平台的关于共享屏幕的耗CPU的问题让我提问,提的是关于音视频发展方向的问题,具体是一个发展空间。

面试很不理想,因为什么都没有准备,而且心力憔悴。面试官问的是一些基础的 Java 问题,很可惜我没怎么回答好。于是就深深的浪费了一次机会,之后和朋友提起此事,无比后悔,当时其实是可以和 HR 电话再约一个时间的

3.字节跳动

一面

1:插件化。启动activity的hook方式。taskAffity。

2:okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称

3:handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。

4:阻塞是怎么实现的?为什么不会阻塞主线程?

5:求二叉树中两个节点之间的最大距离。

6:206含义,未修改资源是哪个,302含义,301含义

7:多进程通信问题。binder优势。aidl生成的java类细节。多进程遇到哪些问题?

8:动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理

9:Application和Activity在Context的继承树上有何区别?二者使用上有何不同?

10:任意一颗二叉树,求最大节点距离

二面

1:设计一个日志系统。

2:内存泄露的分类。怎么查看内存泄露的问题

3:touch事件源码问题。

4:组件化的问题。module和app之间的区别。moduler通信是如何实现的。

5:native奔溃的日志采集,怎么处理?

6:注解实现一个提示功能:如果int的值大于了3需要提示。

三面

1:介绍下flutter的启动流程2:介绍下flutter与weex的区别3:组件化介绍一下4:webview中与js通信的手段有哪些?5:介绍下flutter_boost的原理

四面

1:适配器和装饰模式各自特点和使用场景

2:视频编解码是怎么做的

3:三色球排序

4.百度4.百度

1.HashMap

2.多线程相关问题(volatile、锁、CAS)

3.线程池原理

4.常用的设计模式

5.事件分发、滑动冲突解决方案

6.handler

7.进程间通信方法

8.binder原理及AIDL使用

9.性能优化及相关工具的使用

10.view的绘制及自定义view

11.Activity生命周期及启动模式应用场景

12.Activity启动流程

13.Service启动方式

14.热修复原理

15.Http与Https

16.访问一个URL过程

算法题:

1.单链表的反转

2.有一个存放电话号码的字符串数组、按相同的电话号出现频率排序

3.两数之和(LeetCode第一题)

总结:面试和必备的技能

这里只简单列举一些东西,可能不是特别全,但是却特别适用,也不一定按照下面的流程,有可能是穿插的,也有可能都有,根据公司的规模以及面试官的心情而定(哈哈哈 ,你们就自求多福吧)。建议大家还是要将下面的东西全部掌握,没事写写代码,练练手,在项目中能用到的地方一定要用,有可能会遇到很多坑,一定要自己想办法填坑,之后回忆起这段经历,肯定可以敢理直气壮的跟别人讨论。如果你说的头头是道,那么对方会先输一层,然后在心里对你佩服。

1. 一般情况下第一轮都是基础面试,需要扎实的基础

最常用的Android 基础知识Java 基础知识了解一些 常用东西的原理,例如:handler, thread 等项目中的技术点

2. 第二轮的时候需要了解更深层次的东西

Android 事件分发机制原理Android 绘图机制原理WindowManager 的相关知识进程间传输方式Java 内存管理机制

3. 能进入第三轮基本没什么问题,但是要注意以下问题

该轮一般是 老大或者部门负责人,问的问题一般都看 深度与广度当问及薪水的时候,要说一个合适的,小公司随意,大公司一定要慎重,当心里没底的时候,可以告诉对方,让对方给一个合理的薪资。一般都是在原工资基础之上增长,听猎头说一般涨幅都在15%-30%,超 NB 的可以要30%及以上,如果感觉自己还不错的,挺厉害的,建议最高20%,一般人就定在15% 左右最靠谱。公司内部一般有一套机制,根据公司情况而定。我们的面试原则就是拿到合理薪资,得到 offer个人发展情况,这个问题很难回答,如果和公司方向不符合,极有可能和公司无缘。建议多试探性的问问公司缺少什么,你能否给予公司对应的东西。当然对于有自我追求的人,那可以放心大胆的提。我的方向就是架构师,哈哈哈,挺极端的,别学我哦。我感觉选择都是双向的,因此我知道自己需要的是什么。你最擅长什么UI 还是其他什么?这个问题更不好回答。你要说你擅长 UI,是不是意味着你其他能力就不行?虽然我不知道面试官的用意,但是我能感觉到,这个问题不是那么好回答,我会回答说自己都行,来什么业务接什么需求。可能回答不太好,总之和公司的职位吻合就行,这样总不至于出错吧。题外话

现在外面面试问的的确比较多,要求也挺高的,行情不好,薪资也不好要,所以心态一定要放好,找好自己的定位,心态一定要好。

面试之后要尽量做到总结,在我最开始的时候,没什么准备就出去面试,被打击一通之后,总结了七八家面试题,会发现面试问到的都是那些知识点,可能角度不一样,但是你只要深度够,他怎么问,你基于原理来回答,基本上都没差,连续四家公司都走到了HR面,可以说面试的感觉上来了。前面的总结积累终究没有白费。

当我看到很多面试题,针对题来的时候,题会很多,而且有时候你会觉得你的题都会了,但是面试的时候还是面不好,说明你的知识并不扎实。或者你只是会了这个题,并没有融会贯通。所以不管怎样,刷题还是要坚持的,并且要系统的学习。

互联网行业是一个知识迭代非常快的行业,如果你不养成学习的习惯,其他人不会停下来等你,这样的话你就等于一直在退步!

在这里我也分享一份我这些年收录整理的Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

《Android架构视频+BAT面试专题PDF+学习笔记》私信我回复【资料】免费领取

毕业后,我的第一个5年按照计划进行了,那么拿到offer后,下一个5年也有要清晰的目标。接下来的时间,是形成思维方法论和知识体系的阶段,同时也要培养自己团队协助与管理能力,提升自己的眼界,从而有更长远的发展。

至于心态,脚踏实地,不傲不馁。

最后,希望大家都能够有自己清晰的发展路线,希望大家都能顺利拿下offer,进入理想的公司,共勉!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

免责声明:非本网注明原创的信息,皆为程序自动获取自互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件24小时内删除。

相关阅读