从2020年3月18日投出第一份暑期实习简历至今,已经过去400多天。我也尘埃落定,即将去CVTE做Android开发。

休息了很长时间,如今已经能够很平静地回首这段历程,写下这篇文,致敬曾经走过的漫长求职路。如果还能对即将或正在求职的人有所帮助,也算是功德一件。

开头补充

一、个人背景

双非本科,先后在网易和字节跳动实习,都是做Android开发。

二、时间线

2020年3月初开始准备暑期实习,腾讯3捞3败,最终以 0 offer告终 2020年5月中旬开始投递日常实习,收到网易的两个offer及滴滴OC。2020年8月初开始投递秋招,面试了一些大厂,没有满意的offer。

2021年春招,收到CVTE、乐视offer,知乎一面挂。

三、毕业后进互联网大厂的三个机会

1.暑期实习/春招实习:面向次年毕业的学生,一般随应届春招同步开启(3月左右)竞争相对较小,有转正,转正几率视不同公司而定。

2.秋招:面向应届生,一般在7月中旬陆续开启网申,整个招聘过程持续到9月甚至十月(12月左右零星开始补录)竞争大,HC相对较多。

3.春招:面向应届生,一般在2月中旬陆续开启网申,整个招聘过程持续到4月甚至5月(但其实4月初基本就招完了)竞争巨大,HC极其之少。

一、准备

2020年7月开始准备秋招,直到春招才找到满意的工作,有了暑期实习备战的经验,已经能够清楚所有的流程和准备要点,准备阶段所做的步骤基本如下:

其实每个人都有自己特有的学习方法,我们都需要寻找到最适合自己的,在这里我只是列举出我复习的技巧,大家只需要选择适合自己的就行。

书籍和网站

我觉得看书真的是十分的重要,每一本书都有自己的知识体系,但是好书确实不多,需要经历一番挑选;关于网站则是对一些体系较小的知识进行汇总,这里推荐的是设计模式。以下我列举一些个人觉得不错的一些书籍和网站:

  • Android 相关
  • 《Android开发艺术探索》
  • 《深入理解Android虚拟机》
  • 《Android源码设计模式解析与实战》
  • Java相关
  • 《Java编程思想》
  • 《深入理解Java虚拟机》
  • 《图解Java多线程设计模式》
  • 网络相关
  • 《计算机网络》(谢希仁 编著)
  • 《网络是怎么连接的》
  • 数据结构与算法相关
  • 《算法导论》
  • 《算法》(第4版)
  • 设计模式相关
  • 练习相关

知识总结

看了这么多书籍和网站之后需要对这些知识做一个比较系统的整理,这里推荐使用思维导图工具,下图则是我总结的Android复习体系图,完整的版本大家可以点击这里下载。

面试技巧

  • 面试前需要对自己总结的知识重新回顾一遍,以便在被问及时能够快速并且全面的回答问题。

  • 面试前对该公司稍做了解,可以从官网或者从产品等方面了解,如果有产品的话还可以使用,看看有没有存在一些bug,当面试官要你提问题的时候可以跟他一起讨论。

  • 面试完之后做稍做记录,记下自己回答的不好的问题,方便查漏补缺。

下面是我收集整理的一套大厂Android面试真题含解析,完整的朋友可以点击【这里】免费阅读下载。

部分面试经历

CVTE

一面 (电话面)

  • 讲讲你看的Android源码
  • 说说你在项目中用到的MVC
  • 说说观察者设计模式
  • 讲讲对线程安全的理解
  • JVM内存模型
  • HashMap的工作原理
  • 知不知道可重入锁
  • GC回收算法(凉)
  • 引用方式
  • 内存溢出和内存泄露的区别,内存泄露一定会内存溢出吗?
  • 四大组件有哪些
  • Activity的启动模式
  • Activity的生命周期
  • wait使用时要注意什么(答了死锁,面试官换了题目,应该是没有get到它的点) ---和notify成对出现
  • ArrayMap和HashMap区别(没答出来,之前看过ArrayMap但忘完了......)

二面

二面应该是总监面,问题主要偏向项目,有一些问题已经忘记了,只能列出一些还记得的:

  • 做了哪些项目?详细说一下项目。
  • 讲一下RXJava原理;subscribeOn()与observeOn()哪一个方法多次切换线程只有第一次有效?为什么?
  • Volley原理?
  • Retrofit原理?
  • Volley与Retrofit缓存机制有哪些区别?
  • 简单工厂,工厂方法,抽象工厂三种设计模式的优缺点?
  • 什么是内存泄露,什么是内存溢出?
  • 平常使用什么分析工具来优化APP的性能?
  • 手写算法题————实现一个栈
  • Java的集合类包括哪些?各自有什么特点?
  • 为什么写博客?
  • 今后想要往哪些方面发展?

终面(视频面)

我并不认为我能走到最后[不是矫情和装],因为面过CVTE的人都知道,最可怕的是它的终面,终面是被人诟病的,说CVTE不好的基本都是吐槽它的终面,还是有点慌的。又过了好几天,约好了终面的时间==

  • 给前两次面试打分,满分10分。为什么这么打?
  • 有没有面试过哪些公司了,有收到多少offer了,为什么?
  • 工作的薪资期望,地点和时长?
  • 家庭情况,爸妈性格怎么样,你觉得跟谁的比较像,家里人对工作有什么要求吗?
  • 你父母小时候是怎么教育你的?
  • 有没有女朋友?
  • 你未来有什么规划?(我说了一个三年目标和五年目标)
  • 你在技术方面最有成就感的一件事情是什么?
  • 最近压力最大的是什么事情,如何调解?
  • 为什么没有留在之前的公司?
  • 如果你面试没有通过,你觉得是什么原因呢?
  • 你会因为什么原因拒绝我司的Offer?(个人觉得这个问题回答的很关键,我说我不会拒绝的,因为贵公司就是我想去的公司)

仔细回想发现有点强行跪舔的感觉,中间也暗示过几次只要你要我,我TM就去。

在两天后的晚上官网刷新状态--- 终面通过了,bingo!!!

乐视

笔试:

笔试没啥特别的东西,都是一些java基础,安卓基础,几道中规中矩的算法。

一面:

  • 四种启动模式?写了几个情况,让我说back键的情况?
  • LayoutManager和MeasureSpec之间的关系?
  • 堆排的思想?快排的时间复杂度?手写一下快排?
  • Handler机制?
  • Service即start又bind,怎么才能彻底停止?IntentService怎么实现的?
  • Aidl中Stub和Proxy的区别?聊一聊对Binder的理解?
  • 手写一个有序数组的合并?

二面:

二面整体就是根据我的简历,问了问。让我聊一聊看过的OkHttp的源码。

手写了俩个算法:

  • 用最小的时间复杂度判断单链表是否有交点。
  • 手写二叉树的按层级进行遍历。

HR面:

谈人生谈理想...

乐视的效率不算高...一周后给了答复,可以给offer...不过鉴于乐视最近的情况...再考虑吧

知乎

知乎算是一次体验比较差的体验...一面就让我走了,而且我都不知道啥原因。手动摊手.png

一面:

  • 聊一聊ArrayList源码?什么时候初始化数组?怎么扩容?扩容时使用什么样的方式增大数组?
  • 聊一聊HashMap源码?怎么扩容?源码的hash是怎么保证平均散列的?hash冲突后,使用什么方式解决?插入的时候在头结点,还是尾结点?key为空的处理?
  • java中的序列化和安卓中的序列化
  • 聊一聊安卓中特有的集合
  • 线程安全的Map有什么?使用什么样的方式保证线程安全?分段锁和重入锁的区别?
  • synchronized和Lock的区别?
  • Measure的三种情况?
  • 切圆角有几种方式?(必须吐槽这个题...)
  • Handler机制?postDelayed怎么处理的?
  • 算法:翻转一个int型的大数

一面结束....就没有然后了...

总结

闭关了几个月也有了一些心得(也许是废话):

提前准备(越早越好)+心态良好(打不倒你的终将使你强大)+坚持脚踏实地(对于常问的知识点一定要由浅入深的弄懂到自己可以说出来)+运气(有时候你没面过,不要去怀疑你的实力,可能只是一时运气不好)+注意一些技巧(太老实也不一定是件好事)

对于那些想进大厂的同学一定要刷算法题。对于我那些笔试挂了的,应该都是算法题没做好,尤其是字节跳动,它的笔试题就是五个算法题。

上面的内容里内心戏(废话)比较多,其实笔者真的比较菜,标题不是自嘲。这个Offer在很多大牛看来很普通,一般只是作为备胎。但对于笔者来说真但不太容易,自己也很满意了,我拿到offer后,没有怎么考虑,直接接受了offer,准备把学校的最后琐碎事弄好就过去就职。

下面放一些我在准备面试看的一些感觉很不错资料,也祝在找工作的小伙伴早日找到心仪的工作

Android进阶指南

Android 开发相关源码精编解析

2020年Android大厂面试真题合集(附答案)

双非本科Android开发,如何逆袭拿到大厂 Offer?的更多相关文章

  1. 非科班双非本科投的337家Java后台(励志)

    考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默想起来一个声音:”乔戈里峰” 前言 文章出自h ...

  2. 谁说双非本科就一定无缘阿里?H哥粉丝6面通过,喜提Offer!

    本文来自作者投稿(原作者:小胖儿),原作者是一位2021届本科毕业生,就读于一所双非(非985.非211)院校,在今年2月份的时候,我曾经帮他指导过简历,并且根据他的简历内容帮他提了一些可能会问到的问 ...

  3. 双非本科字节跳动Android面试题分享(已拿offer)

    基本情况 本人系非985非211普通本科生一枚,有实习有项目经历但成绩普通,在面试前刷了很多面经.面试题,这里也把自己的分享下,做个回报好了,顺便攒攒人品,一到这种时候人就迷信起来了. 面试是以视频面 ...

  4. 双非本科字节跳动Android面试经验和心得体会分享(已拿offer)

    新人报道,没有什么可分享的,就记录一些自己求职的体会和心得. 我是在校招补录的时候参加了今日头条的招聘,岗位是Android开发,最后成功拿到了入场券.但是这也丝毫不值得骄傲,大家都知道:技术日新月异 ...

  5. 双非本科进大疆(SP)!

    哈喽,大家好,我是仲一.今天和大家分享的是一位优秀双非本科生上岸大疆的经历(羡慕哭了...). 今年4月底的时候,这位学弟和我分享了他拿下oppo,京东,联发科实习offer的经历,当时我还发了朋友圈 ...

  6. 40k*16 薪,五年Android开发4轮面试拿下腾讯 Offer !(附真题)

    概述 感觉毕业后时间过得真快啊,从16年6月本科毕业入职了一家不大的公司,到现在快五年了,前段时间金三银四想着找一个新的工作,前前后后花了一个多月的时间复习以及面试,前几天拿到了腾讯的offer,想把 ...

  7. 作为一名双非本科毕业的Java程序员,我该如何在日益严重的内卷化中避免被裁?

    前言 对一个 Java 程序员而言,并发编程能否熟练掌握是判断他是不是优秀的重要标准之一.因为并发编程在 Java 语言中最为晦涩的知识点,它涉及内存.CPU.操作系统.编程语言等多方面的基础能力,更 ...

  8. 双非本科拿到阿里腾讯字节,分享Java后端路线

    前言 最近有很多小师妹来问我. 师妹:师兄~看了你之前的从腾讯到阿里,最后选择字节,觉得你特别厉害,请问你是怎么进BAT的呀,能不能告诉我你的学习路线呀~ 既然小师妹都这么问了,那我在这篇就如实回答她 ...

  9. 【Android实习】20场面试斩获大厂offer,我学会了什么

    前言 很高兴遇见你~ 先说一下笔者春招实习的情况:从三月初到四月半,经历了近20场面试,一共面试了五家企业,通过了腾讯.字节.蚂蚁.美团的面试,虎牙在一面之后拒了二面邀请. 金三银四,笔者不是在面试中 ...

随机推荐

  1. Java基础篇(JVM)——字节码详解

    这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...

  2. MIT6.828 Lab3 User Environments

    Lab3 这个实验分成了两个大部分. 1. PartA User Environments and Exception Handling kernel使用Env这个数据结构来trace每一个user ...

  3. jenkins send files or publish

    1.创建一个自由风格项目 2.添加用户凭据 3.配置git 4.配置构建方式 这里选择 send files or execute command over SSH 5.配置远程发布脚本 6.构建 7 ...

  4. Android hacking event 2017

    1.you can't find me, 老规矩先打开jeb,然后看下主活动, 发现又调用了mainthread类的startWrites方法,继续跟进去. 发现是新建了一个随机输入流的文件对象,然后 ...

  5. Xshell怎么连接数据库

    之前一直用Navicat Premium链接数据库,其实在xshell也可以链接数据库,本文将先介绍如何用xshell链接数据库的方法. 1.打开xshell,连接上 输入指令:mysql -h 19 ...

  6. mybatis 加载策略及注解开发

    1. 延迟策略 在需要用到数据时在加载相关数据,常用于一对多关系, 优点:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能, 缺点:当需要用到数据时,才会进行数据库查询,这样在大批量数据查 ...

  7. 【spring源码系列】之【Bean的初始化】

    只要不放弃,希望迟早都会到来! 1. Bean的初始化 如果把bean的生命周期看作一个婴儿诞生过程的,那么创建实例相当于婴儿从母体出来,一丝不挂光秃秃:属性赋值相当于给宝宝的头带帽子,上身穿衣服.下 ...

  8. C语言:printf*("%x")

    #include <stdio.h> int main(){ int a = 100; char str[20] = "hello world!"; char *zza ...

  9. python pip install matplotlib安装模块

    python pip install matplotlib安装模块,可附带安装相关的模块 程序运行提示: from . import _imaging as coreImportError: DLL ...

  10. python numpy 数据集合操作函数

    arrarray([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])arr1array([0, 1, 2, 3, 4])np.intersect1d(arr,arr1)#计算数组ARR A ...