我的2024Android开发岗面经分享,在5面字节后结束我的求职生涯

174 阅读7分钟

在小公司做开发,一个同时开发几个app也是比较常见的,而且公司的代码和项目管理都非常的不规范,一些祖传代码能让你一些白了头。诸多因素综合下来更加坚定了我奔大厂的决心,提升技术能力也好,镀金也罢,又或是开篇说的一种能力的见证,在今年5月份我毅然决然的选择了裸辞,开始我的奔大厂之路。

至6月结束,面完了网易、oppo、拼多多、滴滴、优酷、蘑菇街,结果都是凉凉(内心还是很虚的,所以先找了些规模偏小的大厂下手)。总体的一个感觉就是,感觉面试官问的感觉都会,但是就是卡在喉咙里面说不出来,问到一些底层,源码,方面的东西,更是脑子一片空白,有个面试官甚至反问我,“你之前的16k是怎么拿到的?”。 准备还是太不充分了,突然意识到,随后在7月份开始降低了面试的频率,开始复习,从java基础到底层源码,该背的背,该写的写, 并在每次面试之后记录下面试官的问题,回去做复盘和延伸,实践出真知。

汗水+坚持+方法=成功

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。 我其实特别不喜欢那种临近考试就提前背啊记啊各种题的行为,非常反对!我觉得这种方法特别极端,而且在稍有一点经验的面试官面前是根本没有用的。建议大家还是一步一个脚印踏踏实实地走。


建议寻找大厂方式
1.关注大厂官网,随时投递简历(走流程的网申);
2.线下参加宣讲会,直接投递简历;
3.找到师兄师姐/认识的人,帮忙内推(能够让你避开网申简历筛选,笔试筛选,还是挺不错的,不过也还是需要你的简历够棒);
4.博客发文被看中/Github 优秀开源项目作者,大厂内部人员邀请你面试;
5.求职类网站投递简历(不是太推荐,适合海投);

除了这些方法,我也遇到过这样的经历:有些大公司的一些部门可能暂时没招够
人,然后如果你的亲戚或者朋友刚好在这个公司,而你正好又在寻求 offer,那
么面试机会基本上是有了,而且这种面试的难度好像一般还普遍比其他正规面试低很多。
学习+复习

  • 笔试

很早就了解了互联网公司面试必考,也是一个程序员必备的内功,我的算法水平也就是刚及格的水平,肯定是不能达到面试所需的水平的,于是便开始有计划的在LeetCode上刷题,一开始是计划每天刷8道Easy难度的题,后来越刷越熟练后便每天刷4道Medium和4道Easy,然后转变为每天刷4~6道Medium。虽然不能说马上掌握全部,但是成果还是很不错的。

  • 手写代码

因为在面试过程中,面试官可能会要求你手写代码(根据我自己的经历来看,这个概率差不多是50%,要看不同的公司和面试官的喜好)。根据我的总结,认为手写代码有这么几个特点:

  1. 难度相比笔试难度较为简单。
  2. 由于是手写,与在键盘上敲代码有非常大的不同,有可能你在键盘上敲得飞起,但是你在纸上却一行都写不出来。
  3. 形式较为灵活,在没有思路时可以与面试官交流,就算最终没有写出来,你的思路得到面试官认可也是可以通过面试的。

针对这个环节,我准备了一本书,就是大名鼎鼎的 剑指Offer(必读!!!点击获取,学习书籍+视频+面试合集)。

  • 面试问题准备

Android 基础知识

  • Activity
  • Service
  • Broadcast
  • Receiver
  • ContentProvider
  • Intent
  • Fragment

Java 面试题

  • Java 基础
  • Java 中的设计模式

Android 高级

  • Android 性能优化
  • Android 屏幕适配AIDL
  • Android 中的事件处理
  • Android 中的动画
  • ContentObserver
  • 内容观察者作用及特点
  • 项目框架的使用

自我介绍

  • 开发中都使用过哪些框架、平台
  • 都使用过哪些自定义控件项目的流程
  • 项目中常见的问题
  • 即时通讯是是怎么做的常见框架分析
    Flutter 相关面试题全解析
  • Dart 部份
  • Flutter 部份

面试题以及解析,我都做了一个整理

需要的可以点击我的【GitHub】获取!免费分享!希望能用你的鼠标点个赞,给个小小的支持,更文不易,谢谢大家阅读!


其中包括了有基础知识、Java集合、JVM、多线程并发、 Handler、Activity相关、Fragment、service、布局优化、AsyncTask相关、设计模式、Android 事件分发机制、 Binder、Android 高级必备 :AMS,WMS,PMS、Glide、 Android 组件化与插件化等面试题和技术栈!已经帮很多人拿下互联网一线公司的offer。共有31个知识点。

面试详细过程

一面

1.StringBuilder、StringBuffer的区别,为什么StringBuffer快一点,看过这两个的源码没有,线程安全是怎么实现的?
2.LRUCatch的原理实现。
3.一些排序算法的时间复杂度:冒泡、快速排序
4.try。。。catch。。。finally 问了个通过 exit()退出程序 会不会执行finally?
5.Java容器,set map的区别。
6.TCP UDP区别
7.设计模式,主要问了工厂模式的几种情况。
8.讲一下Java内存模型 局部变量存放在哪
9.讲一下引用传递
10.讲讲Handler机制。解释发送一条消息会经过哪些过程。问了我Handler源码看到哪一层(看到了Java)。Handler创建好以后怎么才能关联到他所在的线程?(这个回答的不是很好,感觉是在Handler的构造方法里关联的?),问了要传进什么参数?
11.ListView的VIewHolder为什么可以减少内存的使用?
12.多线程相关。Java中控制多线程的方法。锁、synchronize(可以对哪些对象加锁(静态变量加锁和对普通变量加锁有什么区别),实现原理)、wait notify
13.ANR。在广播内做耗时操作会怎么样。

二面

1、项目相关;
2、Handler机制,线程如何开启消息循环;
3、px、dp、sp,dp和sp的区别;
4、Java中内存分区,分别什么作用;
5、Java中的Error和Exception;
6、Java中的双亲委派模型;
7、Android app的打包流程,各种文件分别如何处理;
8、Java中面向对象设计原则;
9、图像处理的相关原理,裁剪、旋转、缩放等(项目相关);
10、Android中如何自定义view;
11、Android中的动画类别,插值器和估值器;
12、反问。

三面

0、项目相关;
1、Android中超时重传中关于流量和省电的优化(项目相关);
2、线程和进程区别;
3、死锁及解决方式;
4、Handler可以绑定多个Looper吗,如何判断Looper.myLooper获取得到的是当前的Looper、ThreadLocal;
5、TCP三次握手和四次挥手;
6、HTTP和HTTPS,及HTTPS加密过程,数字证书如何认证,常用的数字加密算法有哪些,中间人攻击;
7、GET和POST区别;
8、HTTP1.1、HTTP1.2、HTTP2.0区别;
9、CAS、synchronized、synchronized修饰方法和修饰静态方法有什么区别、乐观锁和悲观锁;
10、HashMap内部机制;