个人情况介绍

本人为某末流985工科硕士,说来令人感慨,我的考研之路异常曲折,每次都觉得自己能十拿九稳,结果每次都阴差阳错,失之交臂,第一次因为那年目标院校大幅度提升初试线,导致差一分未过线,第二次换了学校,初试分数超复试线40多分,但是复试拉胯也未能上岸,直到第三次又换了个学校才最终如愿。

虽然耽误了两年时间,但现在想来那段时期也让我明白了自己到底想要什么以及怎么去争取。

春招之路

研究生期间,因为所在教研室有许多秋招的师兄师姐,所以也亲眼目睹了工科专业的就业艰辛,当时大家的普遍薪资都在15w左右,并且好的研究所,企业都会要求本科学历。

我清楚的知道本科普通一本的我,想要在两年后的秋招里签一个目标企业十分困难。

我的目标很简单,就是薪资与发展前景,我并不在意地理位置,哪里给的薪资高就去哪里,当时并没有考虑过性价比,work life balance等等这些因素,总觉得大不了攒点钱去个轻松点的城市过完一生,现在想来当时的自己还是年轻。

研一时了解了计算机行业的普遍薪资,那时候觉得算法岗又不累,工资又高,于是就准备转算法(又单纯了。。),在一个学期内断断续续学习了吴恩达的机器学习课程,当时觉得这些算法跟线代,优化知识联系很紧密,也能很快接受这些知识。

将算法课程看完之后,发现自己路走错了,网上铺天盖地宣传算法岗诸神黄昏,难如登天,大量科班毕业生纷纷转开发。我又审视了自己的条件,自己非科班出身,也不可能去实习,难道还能竞争得过科班大佬吗。于是我就放弃了算法岗,准备转客户端,仅仅是因为我在网上浏览各种帖子了解到客户端并不像后端一样竞争惨烈。

于是从去年11月开始 专心学习客户端。一直到1月份,把郭霖的第一行代码过了一遍,并跟着做了书里的项目,同时也在刷一些算法题,直到寒假。

寒假期间仅仅看了左程云算法书里的几道常见面试题,到了年后2月底开始正式投递简历,当时给自己定的目标是年新30w,在春招期间只投了一些有名气的公司,包括腾讯、字节、美团、滴滴、顺丰、vivo,其中滴滴的面试由于时间冲突放弃了。

投递的公司基本上都过了笔试,可能是跟岗位选择有关,也有可能是春招竞争并没有那么激烈,最后拿到了美团、顺丰的offer并选了美团。

下面是部分面经,希望能给提前批或者秋招的同学一些借鉴。

面经总结

腾讯一面 50分钟

1.MVVM与mvc、mvp架构的区别与联系

2.mvvm用到的设计模式

3.viewmodel的实现原理

4.viewmodel怎么更新数据的

5.安卓的线程通信

6.looper阻塞为什么不会造成ANR

7.广播里怎么执行耗时操作

8.阻塞多久会出现ANR

9.开发遇到的一些异常,怎么处理

10.线程安全的队列有哪些

11.concurrenthashmap详解

12.fragment的生命周期

13.安卓里解决多线程冲突的方法

14.volatile详解、synchronized详解,两者区别

15.activity生命周期

16.onStart与onResume解释

17.安卓中进程间通信方式

18.内核态与用户态

19.redis原理

20.redis怎么保证原子性

21.TCP传输中header里的字段

22.http状态码

23.Java GC机制

24.进程、线程、协程的联系与区别

25.死锁的必要条件

26.银行家算法

27.TCP拥塞控制

28.四次挥手详解

29.TCP与UDP区别

30.TCP怎么保证可靠传输

31.DNS解析过程

32.TCP报文里的字段

33.算法题:计算二叉树的高度(递归与非递归两种方式)

腾讯二面,35分钟

1.mvvm,mvp,mvc

2.详细介绍项目

3.网络传输层的协议

4.TCP报头

5.TCP三次握手,为什么三次

6.linux内存管理机制

7.虚拟内存与物理内存

8.常用数据结构

9.堆排序原理

vivo一面 45分钟

1.面向对象三大特性,多态怎么实现

2.静态方法与变量是否可以继承,原因

3.Java代理是否用过,怎么实现

4.Java异常详解

5.项目中遇到的异常

  1. 线程安全的队列

7.类加载的过程

8.类加载器,双亲委派模型

9.对象生命周期

10.判断对象是否可以回收的方法

11.有哪些GC roots

12.Java引用类型

13.抽象类与接口区别,各自优缺点

14.Java线程间通信, volatile详解、synchronized详解

15.线程的状态

16.进程、线程、协程

17.死锁怎么造成的

18.线程池详解

19.线程池怎么做到线程复用

20.thread local详解

21.Java泛型,泛型擦除机制

22.TCP与UDP区别,优缺点

23.TCP可靠传输机制

24.介绍http协议

25.https请求流程

26.b树、b+树、红黑树

27.红黑树怎么增加、删除节点

28.输入一个URL到网页显示的过程

29.localhost 与127.0.0.1的区别

30.MVVM、MVC、MVP的区别与联系,各自优缺点

31.activity的生命周期

32.安卓中的数据存储,sharedpreference详解

字节一面 1小时

1.进程、线程、协程

2.进程间能共享内存吗

3.安卓中挂起函数怎么实现的

4.安卓中实现多线程的方法

5.线程池详解

6.线程池设计模式,怎么自己设计一个线程池

7.handler详解,是否会内存泄漏,泄露的原理

8.匿名内部类,原理是什么

9.Java GC算法

10.Java引用类型,弱引用的作用,引用队列。

11.安卓图片缓存,加载

12.安卓中的布局,布局优化方法,常用标签

13.安卓四大组件

14.activity四大启动模式

15.onnewintent方法

16.本地广播

17.jetpack组件

18.viewmodel设计模式,mvc,mvp,mvvm介绍

19.retrofit的具体实现,其中接口的作用,注解的作用

20.hashtable,hashmap与 concurrenthashmap详解

21.哈希冲突解决方法,

22.算法题:随机生成不重复的100个数0-99

字节二面,50分钟

1.https详细介绍

2.get与post区别

3.请求状态码

4.cookie与session

5.Java内部类

6.泛型擦除机制

7.Java内存回收

8.GC roots

9.Java加锁方式

10.线程安全的单例模式(双重检测),为什么要两次判断,volatile作用

11.安卓的事件分发机制

12.算法题:获得二叉树的最大宽度,写出最优解

字节三面,50分钟

5道代码题

1.写一个泛型方法,实现删除数组中的元素功能

2.写一个单例模式

3.返回二叉树的第k大数

另外两个记不得了,代码写的很差,所以三面卒。。。

顺丰一面,30分钟

1.面向对象三大特性与面向过程区别

2.怎么判断对象相等,equals详解

3.抽象类与接口区别

4.Java跨平台的原因

5.JVM,GC算法

6.安卓view绘制流程

7.view怎么确认位置与大小,测量模式

8.常用的viewgroup,与view区别,在事件处理过程中有什么区别

9.安卓事件传递机制

10.listview详解,缓存机制与recyclerview区别

顺丰二面,15分钟

1.项目详细介绍

2.安卓中的listview与recyclerview

3.安卓中的网络请求方式

4.项目中的设计模式

美团一面,1小时

1.安卓项目介绍

2.mvc,mvp,mvvm架构

3.jetpack组件

4.lifecycle介绍

5.viewmodel实现原理

6.retrofit介绍

7.retrofit怎么实现多线程

8.线程池详解

9.多线程会遇到什么问题

10.死锁的条件,手写一个死锁代码并运行出来

11.怎么避免死锁问题

12.可重入锁

13.安卓怎么进行ui操作

14.安卓点击事件的处理

15.下拉刷新原理

16.安卓存储方式

17.contentprovider介绍,能实现耗时操作吗

18.service介绍,生命周期与 contentprovider区别

19.https请求过程

20.算法题:返回第k大的数,先说下你能想到的方法,再选一个最优方法。

美团二面,50分钟

1.Java入口函数

2.方法签名

3.方法修饰符

4.static关键字详解,说下自己知道的关键字

5.Java基本类型

6.字符串详解

7.字符串的常用操作

8.Java io

9.Java异常介绍,是否所有异常都需要捕获

10.对Java抽象的理解

11.接口与抽象类区别

12.类编译过程

13.介绍对安卓中intent的理解

14.自定义view过程

15.介绍service

16.service与activity通信

17.输入URL到返回页面的完整过程

18.怎么加速http连接

19.虚拟内存

20.线程并发会遇到哪些问题,怎么解决

21.详细介绍自己的项目,项目可以有哪些改进的地方

22.算法题:二分法查找目标数

个人总结

关于求职的感想:

1.早做准备很重要,提前实习是一个很好的选择。

2.要多跟人交流,学习,由于我自己前期学习时很少跟人沟通,走了许多弯路。

3.经验贴最好不要看太多,选择一个适合自己的坚持下去。对于校招生来说,转行没想象中那么难,我给自己每天分配的计算机学习时间大概在2-3小时左右,其它时间还是要做自己的课题,所以我能做到的,相信你们也可以,而且肯定能比我做得更好。

回顾整个研究生期间,自己求职目标经历了算法>安卓开发的转变,从这一方面看,我总是在逃避遇到的困难,想着走捷径跨过去,也希望自己以后能改正这个缺点。但不管怎么样,我算是实现了预定的目标,虽然拿的是白菜价offer,但是我已经比较满足了,人的欲望是无止境的,我深知自己的水平,接下来就是好好工作,思考以后的路怎么走。

最后推荐一些我觉得不错的学习资料给大家,如果能帮助到你们就更好不过了。

1.计算机网络:《图解http》

2.算法:《图解算法》,《程序员代码面试指南》,《剑指offe》,力扣,牛客网刷题

3.Java:《深入了解Java虚拟机》,《Java并发编程之美》

4.数据库:《mysql必知必会》

5.安卓:《第一行代码》《疯狂Android讲义》《Android编程权威指南》

一些大佬的公众号或者网站:Javaguide(知识点非常全面),狂神说(推荐spring框架),Java3y,编程指北,labuladong算法小抄(这个有争议),郭霖,鸿洋,阮一峰,廖雪峰等等。

还有一份我整理的Android开发核心知识笔记以及一线互联网企业面试真题解析:

需要的朋友只需要 点赞支持一下 后,然后【点击这里免费获取

文章写的比较匆忙,水平不高请大家见谅,希望你们都能找到满意的offer,加油!

985硕艰难转行Android之路 加面经分享的更多相关文章

  1. 【重走Android之路】【开篇】序

    [重走Android之路][开篇]   [序]         本人Nodin,偶尔也叫MoNodin,朋友们都喜欢叫我丁,还有个笔名叫陌上幽人,文艺时叫恋风,发奋时叫不肯腐烂的土壤...也许你觉得我 ...

  2. Android 高清加载巨图方案 拒绝压缩图片

    Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自:[张 ...

  3. Android 图片异步加载的体会,SoftReference已经不再适用

      在网络上搜索Android图片异步加载的相关文章,目前大部分提到的解决方案,都是采用Map<String, SoftReference<Drawable>>  这样软引用的 ...

  4. 【重走Android之路】【番外篇】关于==和equals

    [重走Android之路][番外篇]关于==和equals   在实际的编程当中,经常会使用==和equals来判断变量是否相同.但是这两种比较方式也常常让人搞得云里雾里摸不着头脑.下面是我个人做的总 ...

  5. 【重走Android之路】【番外篇】有关于null的一些知识点

    [重走Android之路][番外篇]有关于null的一些知识点   1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...

  6. 【重走Android之路】【Java面向对象基础(三)】面向对象思想

    [重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想   1 面向对象的WWH   1.1 What--什么是面向对象         首先,要理解“对象”.在Thinkin ...

  7. 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

    [重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder   1.String String是Java中的一个final ...

  8. 【重走Android之路】【Java面向对象基础(一)】数据类型与运算符

    [重走Android之路][基础篇(一)][Java面向对象基础]数据类型与运算符   1.数据类型介绍 在Java中,数据类型分为两种:基本数据类型和引用类型. 基本数据类型共8种,见下表: 基本数 ...

  9. 【重走Android之路】【路线篇(二)】知识点归纳

    [重走Android之路][路线篇(二)]知识点归纳   参考:http://blog.csdn.net/xujing81/article/details/7313507   第一阶段:Java面向对 ...

随机推荐

  1. QPainter::begin: Paint device returned engine == 0, type: 1

    开始 使用QPainter画图,需要继承QWidget,重写paintEvent()虚函数,在里面进行绘图. 或者可以考虑绘制到QImage或者QPixmap上面,然后在paintEvent()里面调 ...

  2. Linux从头学02:x86中内存【段寻址】方式的来龙去脉

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  3. 万字长文肝Git--全流程知识点包您满意【建议收藏】

    您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦. 本文将首先介绍在本地搭建GitLab服务,然后重点介绍Git的常用命令,Git的核心概念以及冲突处理,最后介绍Git与SVN的区别 干货满满,建议 ...

  4. Springboot quartz集群(3) — 多节点发送邮件

    本期将提供quartz集群能力 集群案例分析: 上一期的邮件发送功能,若在服务需要部署多节点,但定时任务不支持集群,因此,多节点定时任务势必会同时运行, 若向用户发送邮件通知,这种情况下会向用户发送两 ...

  5. B 站崩了,受害程序员聊聊

    非吃瓜,B 站事件始末分析 + 防治技术分享 大家好,我是鱼皮,昨天小破站崩了的事情相信很多朋友都听说了. 这要是搁以前,不爱吃瓜的我根本不会去关注这种事,崩了就崩了呗,反正天塌下来有程序员大佬们扛着 ...

  6. Adaptive AUTOSAR 学习笔记 1 - Overview

    缩写 AP: AUTOSAR Adaptive Platform CP: AUTOSAR Classic Platform AA: Adaptive Application ARA: AUTOSAR ...

  7. 远程cmd操作

    <<PSTools.zip>><<Install_PowerCmd.exe>><<cmder_mini.zip>><< ...

  8. Django 基础05篇 上下文管理和前端代码复用

    一.上下文管理器 在views中重复使用的代码,可以通过上下文管理器(在setting.py文件中的TEMPLATES中配置)中实现,减少代码冗余 上下文管理器的处理流程如下: 1.先走完views里 ...

  9. java集合(2)-Collection与Iterator接口

    1 package com.j1803.collectionOfIterator; 2 import java.util.ArrayList; 3 import java.util.Collectio ...

  10. 字典get方法和setdesault方法,统计message中各元素的出现频次

    message= 'There are moments in life when you miss someone so much that you just want to pick them fr ...