前言
前段时间被曝出来杭州某HR歧视专科生 “考不上本科的都是脑子有问题的” 其实学历歧视一直都是存在的,人们在生活或者是在工作上面不顺心,总是喜欢找一些发泄的的口子,一些所谓的高学历人群打着学历高就是智商高的幌子堂而皇之地凌驾于其他人之上,我感觉这种学历歧视关系就和以前的封建官僚制度是一样的,层级分明,级级剥削。
对于Android程序员来说的话,学历歧视这一方面相对来说还是比较少的,一个以技术为尊的行业当然是信奉技术至上的原则,同时你也会问了,为什么现在的公司最低要求就是本科生,这叫我们专科程序员该怎么办?
其实你要弄懂这个问题,你就不会有这种疑虑了,中国的人才市场是个相当庞大的市场,设身处地的想一想,如果你是老板,在高标准的情况下能招到人才,你会愿意放低要求吗?答案也是显而易见的,但是也有特殊情况,因为是个考技术吃饭的行业,所以技术才是根本。
技术提升和面试门路这两方面都是只要你用点心都有机会的。
关于面试门路
现在一些比较大的厂都会有内推资格的,可以去找一下在大厂上班的朋友,求一份内推资格,再就是面试部分,迎面而来的就是简历,简历可以找一找相关的模板来填写,大厂主要是注重项目经验和算法相关,这两点可以着重写一下。
在面试过程中,要有自己的节奏,不要让面试官牵着你的鼻子走,要去引导面试官去问你擅长的问题,这样的话,面试起来就会很轻松。
然后就是相关的大厂面试题,万变不离其宗,大厂的常考点就是关于算法,项目,架构以及一些其他的拓展问题,在这里我也分享一下我整理的大厂面试专题资料,帮助大家查漏补缺,以及相关的面试辅导,内推资格,详情请加裙点击直达
面试经验分享
我也算是一线公司都踩过点的Android 码农了,Google也踩过一次,现在就说说我自己的一些感受。在阿里的时候我作为面试官接触过几十个面试者,能左右我是不是通过这个人的,主要因素还是这个人对技术的热爱程度。
因为有这种极客精神,做任何技术上的事情都是时间上的问题,所以面试过程中要尽可能表现出对技术的热爱。
那除了这种因素外,我们怎么做才能更大概率的进入一线公司呢?
还有一个比较重要的因素就是知识的深度。我认为深度优于广度,广度通过看各种文章都能了解,但一旦碰到实际问题,这时候往往靠的是自己的知识深度。比如,Android程序员们很多人知道四大组件职责都是什么,还会些性能优化,但是如果不知道Framework层系统服务原理,就做不出插件化框架。
因为一线公司业务的复杂度也决定了业务的深度,如果没有较好的深度探究能力,是很难胜任的,所以知识的深度也很重要。极客精神加上某一领域知识的深度能力,就可以达到一线公司标准了。面试中非理性因素也有较大比重,但是这种东西是我们没办法掌控的,如果因为这种因素失败了,也没必要气馁。
我认为能力是和回报成正比的,就算此刻没发生,下一刻也会出现,只要掌握了我们该掌握的能力,总有一天会进入我们理想的公司。
相关的面试资料
因资料和面试题包含的技术点比较多,无法在简书上全部展示,所以整理了PDF文档供大家面试时做参考,需要这份《Android面试题+答案整理》PDF的朋友可以前往 GitHub自行查阅
Android架构进阶资料分享
一、Java 基础+进阶
- JVM
- Object
- static
- final
- String、StringBuffer. StringBuilder
- 异常处理
- 内部类
- 多态
- 抽象和接口
- 集合框架
- 反射
- 单例线程
- volatile
- synchronized
- Lock
- 引用类型
- 动态代理
- 元注解
Android 知识点汇总
- Activity
- Fragment
- Service
- BroadcastReceiver
- ContentProvider
- 数据存储
- View
- 进程
- Parcelable接口
- IPC
- Window / WindowManager
- Bitmap
- 屏幕适配
- Context
- SharedPreferences
- 消息机制
- 线程异步
- RecyclerView 优化
- Webview
Android 扩展知识点汇总
- ART
- Hook
- Proguard
- 架构
- Jetpack
- NDK开发
- 类加载器
常见面试算法题汇总
- 排序
- 二叉树
- 链表
- 栈/队列
- 二分
- 哈希表
- 堆/优先队列.
- 二叉搜索树
- 数组/双指针
- 贪心
- 字符串处理
- 动态规划
- 矩阵
- 二进制/位运算
- 其他
Android基础问题相关(面试题与答案已整理成了PDF文档):
1、接口的意义-百度
2、抽象类的意义-百度
3、内部类的作用-乐视
4、Java 虚拟机的特性-百度-乐视
5、哪些情况下的对象会被垃圾回收机制处理掉-美团-小米
6、进程和线程的区别-猎豹-美团
7、java中==和equals和hashCode的区别-乐视
8、HashMap的实现原理-美团
9、string-stringbuffer-stringbuilder区别-小米-乐视-百度
10、什么导致线程阻塞-58-美团
11、多线程同步机制-猎豹
12、ArrayMap对比HashMap
13、hashmap和hashtable的区别-乐视-小米-360
14、容器类之间的区别-乐视-美团
15、抽象类接口区别-360
Android 方面(面试题与答案已整理成了PDF文档)
16、如何导入外部数据库?
17、本地广播和全局广播有什么差别?
18、intentService作用是什么,AIDL解决了什么问题-小米
19、Ubuntu编译安卓系统-百度
20、LaunchMode应用场景-百度-小米-乐视
21、Touch事件传递流程-小米
22、View绘制流程-百度
23、多线程-360
24、Handler,Thread和HandlerThread的差别-小米
25、线程同步-百度
26、什么情况导致内存泄漏-美团
27、ANR定位和修正
28、什么情况导致oom-乐视-美团
29、Service与Activity之间通信的几种方式
30、如何保证service在后台不被Kill
31、Requestlayout,onlayout,onDraw,DrawChild区别与联系-猎豹
32、Android动画框架实现原理
33、Android为每个应用程序分配的内存大小是多少-美团
34、优化自定义view百度-乐视-小米
36、volley-美团-乐视
37、Glide源码解析
38、Android设计模式
39、Android属性动画特性-乐视-小米
40、Activity Window View三者的差别,fragment的特点-360
41、invalidate和postInvalidate的区别及使用-百度
42、LinearLayout和RelativeLayout性能对比-百度
43、View刷新机制-百度-美团
44、架构设计-搜狐
腾讯公司Android面试题精选
45、2000万个整数,找出第五十大的数字?
46、从网络加载一个10M的图片,说下注意事项
47、自定义View注意事项
48、项目中常用的设计模式
49、JVM的理解
阿里Android面试题精选
50、进程间通信方式
51、什么是协程
52、内存泄露是怎么回事
53、程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系
54、数组和链表的区别
55、二叉树的深度优先遍历和广度优先遍历的具体实现
56、堆的结构
57、bitmap对象的理解
58、什么是深拷贝和浅拷
59、对象锁和类锁是否会互相影响
60、looper架构
61、自定义控件原理
62、自定义控件原理
63、ActivityThread,Ams,Wms的工作原理
64、Java中final,finally,finalize的区别
65、一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法
66、两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
67、volatile 的意义?
68、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?
面试题及答案整理部分截图: