毕业一年多,做Android开发现在我很迷茫,连一个20k工作都找不到......

我是19年从安徽的一所普通一本毕业的,由于喜欢Android开发,毕业后第一份是Android开发的工作,月薪6K,虽没有人带但公司给我自学的机会。

后来随着自己经验慢慢的提升,来上海顺利的拿到了月薪13K的offer,但由于我做的项目突然停掉,我离开了这家公司。

再次找工作的时候我非常谨慎,边找边学习,争取进入自己理想的公司。后来发现真的好难,很多公司给出的薪资都是和原来差不多的。当一家公司决定给月薪18k我就答应了。

入职发现这家公司的代码和项目管理都不规范,我不想在这么垃圾的代码上去完善功能,而且担心什么都学不到甚至都有可能把自己的编码习惯带的不规范,我想辞职后学习边找工作,但是如果辞职之后去不了想去的公司,再找这样的公司估计也都没有机会了。

当初毕业的时候,给自己定下了两个目标

1.三年内月薪过20k;

2.三年内至少参与一款千万用户的APP。

现在两个目标都显得遥不可及。我希望自己有一天能写出优秀的代码,因为喜欢Android,所以我觉得工作非常开心,可是对于我来说想找一家有大牛团队的公司或者进大厂就那么难吗?


我知道我们很多程序员都有一个大厂梦,但是对于如何进大公司、如何针对大公司准备面试就显得手足无措了。

我自己做Android开发已经是第6个年头了,毕业后两年,有幸加入到字节跳动这个大家庭。在字节的4年,见证了太多人的来来去去,印象很深一个同事,跳槽阿里薪资直接double,但也看到很多人镀着“大厂”的金四处碰壁,终究还是倒在了技术上!

我自己或许也算是个成功的例子,在4年的时间里从1-1做到了2-2,当然,这背后的“辛酸泪”就留到日后再说。下面我就根据自己一些见解谈谈如何针对大厂进行面试准备。

大厂简历筛选标准

以下是我总结的一些大厂常见的筛选标准,不特指某个公司,估计大部分大家也都知道,仅供参考。

1)当前就职企业。当前就职企业是互联网大厂基本简历关就过了,除非有其他特别大的问题。

2)毕业学校(本科更重要)和专业,如果是知名学校,例如211、985之类的,会有加分,如果是非本科会扣分,如果是非计算机专业会扣分。

3)期望薪水,这点可能很多人没想到,但是这个确实是一个很重要的筛选条件,因为这个很直接的反映了你当前的水平。主要参考下限,如果下限低于某个值基本不会考虑。

4)年纪和工作年限,很残酷的事实,相信大家也应该都听过“程序员35岁送外卖开滴滴”。

5)专业技能,如果有阅读过某些源码、深入研究过某个框架之类的会加分,使用“精通”字眼的扣分哈哈。

6)项目,方向一致会有加分。

7)其他,技术博客有不错的技术文章加分,github 有参与一些知名开源项目加分,有机构培训经历扣分,跳槽过于频繁扣分,特别是跳的都是小公司。

综上,对于大部分人来说,特别是对于年轻人,大厂经验还是非常重要的,所以如果有进入大厂的机会,千万要抓住,不要太在意当前的薪资,大厂能够给予你的成长机会、后续的涨薪这些都是小厂没法比的。

一些大厂的面试流程

阿里:通常3~4面技术+Hr面,每一轮结束可以问内推人或者通过面试邮件底部的电话转人工查询面试结果,一般流程比较长,大多要一个月以上,无法并行面多个部门。

腾讯:通常3-5轮技术+Hr面,每一轮结束可以问招聘Hr面试结果,一般流程比较长,每一面之间可能要隔一周,全部流程大多要一个月以上,无法并行面多个部门。

美团:通常3~4面技术(3.1开始多一轮交叉面)+Hr面,通过的话一般3个工作日内约下一次面试时间,一般半个月就可以走完流程,可以并行面多个部门,美团是少有可以并行面的公司,但是一旦第一个部门定薪定级后,后续的其他部门即使通过了也会按照第一个的定薪定级。

快手:通常3~4面技术+Hr面,通过的话一般2个工作日内约下一次面试时间,经常面完几个小时内就收到电话约下一次面试,一般半个月就可以走完流程,无法并行面多个部门。

字节:通常3~4面技术+Hr面,面试效率比较高,可能一天内就面完技术面,整个面试流程比较快,但是发口头offer比较慢,无法并行面多个部门。拼多多:通常3面技术+Hr面,现场面可以一天面完,并且可以周日面,一般半个月就可以走完流程,无法并行面多个部门。

面试要注意的一些点

1)尽量保持自信,自信心的建立源于你自己的武器库里有多少武器,所以归根到底还是要多学习、多积累。

2)先拿小公司练手,面试通常会面的越多发挥的越好。

3)视频面试提前调试好设备,不要像我一样临时发现没法打开视频就尴尬了。

4)大厂谈薪时通常会看你是否有其他大厂的offer,如果你有其他大厂的offer会有利于谈一个不错的待遇,所以可以多面几家。

面试前应该准备哪些内容

Android面试需要准备内容的大致划分:

  • Java基础
  • Android基础
  • Android源码分析
  • Android进阶技能
  • 新技术研究
  • 开源项目源码分析

Java基础

1.Java集合类List,Map,Set相关的实现原理。
2.Java线程池的实现原理和使用
3.Java线程同步相关的知识点。
4.Java锁机制,以及死锁产生的原因以及解决方案。
5.Java反射、泛型、注解相关的知识点以及使用。
6.Java类加载机制。
7.Java虚拟机的资源回收机制以及算法。

以上基本上是面试Android岗位的常见考点,所以我们必须重视对Java语言的学习和理解,即便你在平时工作中使用kotlin较多,也不能忽视对Java基础知识的巩固和学习。

Android基础

Android基础是任何Android面试都需要考核的内容。不过这也是按级别而定,一般高级开发工程师的面试,Android基础只是一笔带过。

1.Handler机制以及相关知识。
2.Activity和Fragment生命周期。
3.Android四大组件相关的知识。
4.Android进程间通信的方式。
5.Context相关的知识。
6.Activity的启动模式。
7.Android动画相关知识。
8.Android自定义组件相关知识。
9.Android事件分发机制以及触摸事件冲突的处理。
10.ANR产生的原因以及避免ANR的方式。
11.内存泄漏产生的原因以及定位解决的方式。
12.OOM产生的原因以及解决的方式。
13.Android页面渲染机制以及优化方式。
14.LinearLayout、FrameLayout、RelativeLayout和ConstraintLayout的理解和性能对比。
15.Android各版本的特性。
16.Android屏幕适配的技巧。
17.MVC,MVP,MVVM的理解与实践。
18.Android的主题、样式、属性相关的内容。
19.JNI相关的知识。

Android源码分析

Android源码分析,算是要求较高的考核。不过这在大厂面试中非常普遍,因为很多大厂对Android源码的分析和理解都有相当高的要求。

1.Android系统的启动流程分析。
2.APP启动的流程分析。
3.Activity的启动流程分析。
4.Zygote进程的创建和启动流程分析。
5.Window窗口创建和加载的流程分析。
6.Dalvik和ART的理解。
7.RecyclerView的源码分析。

Android进阶技能

要想成为一名高级开发工程师,性能优化以及架构设计永远都是绕不开的话题。做技术如果只是广而不深的话,是不可能成为一名高级开发工程师的。只有不断提升自己的不可替代性,才能提高自己的价值。

1.App稳定性优化。(crash、性能以及体验等)
2.App启动速度优化。
3.App内存优化。
4.App界面绘制优化。
5.App瘦身优化。
6.App安全优化。
7.网络请求优化。
8.WebView使用优化。
9.RecyclerView的缓存刷新优化。
10.AOP技术的原理和实践。
11.gradle脚本持续集成技术。
12.App进程保活。

新技术研究

1.Android组件化。
2.Android插件化。
3.Android热更新技术。
4.Android JetPack框架技术。
5.Kotlin开发技术。
6.Android Hook技术。
7.AOP技术。
8.依赖注入技术IoC。
9.跨平台开发技术:ReactNative、Flutter等。

上面的内容,其实很多已经算不上新技术了,如果你现在还不了解的话,那么你最好花点时间了解一下,否则我只能说你是真的out了。

开源项目源码分析

  • OkHttp
  • Retrofit
  • Glide
  • LeakCanary
  • RxJava
  • ARouter
  • EventBus
  • ButterKnife
  • GreenDao
  • Dagger2

以上所有的知识点都有相对应的面试题,有需要的朋友可以点击我免费获取。

如果说以前移动 App是处于蛮荒时代,那么现在是改革开放,精益求精的时代,市场依然很大,android发展也趋于稳定迭代,很多前人留下的资料都可以去学习,很多坑很多人躺过抢,现在就像捡西瓜一样,把它捡起来就是你的。

猜你喜欢

转载自blog.csdn.net/weixin_52217015/article/details/115218267