好不容易撑过了腾讯三面!却因为虚报工资被刷了,挥泪整理面经
2.硬币兑换问题 [算法]
3.车的通过问题,一条路上,30 分钟内看到有车通过的概率是 90%,那么 5 分钟之内概率是多少
4.图的展现形式
5.全球货币转换功能的代码
6.给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度
这是我在某论坛看到的故事,我知道我们很多程序员都有一个大厂梦,但如何针对大厂进行面试准备,如何和 HR 聊天,比如谈钱等等,很多程序员就显得手足无措了。本文就根据自己一些见解谈谈这些问题。
在介绍如何面试之前,这里先从公司的角度来分析:”到底什么样的候选者是公司所需要的技术人才?“就我在现在这家公司的一些面试官经验来说,一个具有如下特征的 Android 程序员是我们所需要的:
具有本科及以上学历(名校更好)
具有 2 年及以上的工作经验(名企更好)
技术扎实,有技术追求和工作激情
良好的沟通和协作
在上面的四条中,其中第 3 条是最为重要的,即技术,技术是决定能否通过面试的最重要最直接的原因。一般来说,越是大公司,其对技术的要求就越高,尽管部分岗位并不需要那么好的技术,但是为了对候选者做出区分,其面试过程仍然会面试一些稍微深入的话题,相信大家都有所体会。
除了技术以外,良好的沟通和协作能力也是比较重要的。也许很多人觉得这个比较抽象,心里会想:”你怎么知道我有没有良好的沟通和协作能力呢“?其实这个问题并不难,面试过程就是一次沟通过程,如果不能和面试官很好地沟通,这就说明候选者的沟通有问题。如何很好地和面试官沟通呢?给如下几点建议:
礼貌和尊重。
听懂面试官的问题并直接回答。
谦虚谨慎、态度友好。
下面对学历和工作经验做一些说明,学历并不是一个硬性要求,即使候选者学校不怎么好也是有可能通过面试的,这就要求候选者技术非常扎实。而工作经验,之所以是 2 年以上,这是因为社会招聘的对象一般都是有一定工作经验的,而 1 年工作经验略短了点,拿百度来说,社招的最低级别一般为 T4,差不多刚好就是 2 年经验左右。
这里做下总结,理想的候选者应该是这样的:
扎实的技术功底,有技术追求(必须)
态度、沟通和为人都很好(必须)
2 年左右工作经验(基本必须)
名校、名企、高学历(非必须,加分项)
基本来说,满足 1 和 2 就能通过面试,3 和 4 都是次要条件,但是一般来说不满足 3 就很难满足 1,不要说特例,木有参考意义。
由此可见,技术是面试结果的决定因素。那么到底技术掌握到什么程度才能比较轻松地通过面试呢?说了那么多,好像和 Android 没有一点关系,下面就开始以 Android 为例来分析下面试过程所需的技术。
再来看看大厂的一些常规面试题
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。点击这里免费下载获取!
常问的点:
Handler Looper Message 关系是什么?
Messagequeue 的数据结构是什么?为什么要用这个数据结构?
如何在子线程中创建 Handler?
Handler post 方法原理?
Android 消息机制的原理及源码解析
Android Handler 消息机制
启动模式以及使用场景?
onNewIntent()和 onConfigurationChanged()
onSaveInstanceState()和 onRestoreInstanceState()
Activity 到底是如何启动的
启动模式以及使用场景
onSaveInstanceState 以及 onRestoreInstanceState 使用
onConfigurationChanged 使用以及问题解决
Activity 启动流程解析
mg.cn/img_convert/667c10d5b7037079257df52969203c90.png)
Fragment 生命周期和 Activity 对比
Fragment 之间如何进行通信
Fragment 的 startActivityForResult
Fragment 重叠问题
Fragment 初探
Fragment 重叠, 如何通信
Fragment 生命周期
进程保活
Service 的运行线程(生命周期方法全部在主线程)
Service 启动方式以及如何停止
ServiceConnection 里面的回调方法运行在哪个线程?
startService 和 bingService 区别
进程保活一般套路
关于进程保活你需要知道的一切
Android 布局优化之 ViewStub、include、merge
什么情况下使用 ViewStub、include、merge?
他们的原理是什么?
ViewStub、include、merge 概念解析
Android 布局优化之 ViewStub、include、merge 使用与源码分析
注册方式,优先级
广播类型,区别
广播的使用场景,原理
Android 广播动态静态注册
常见使用以及流程解析
广播源码解析
AsyncTask 是串行还是并行执行?
AsyncTask 随着安卓版本的变迁
AsyncTask 完全解析
串行还是并行
onTouch 和 onTouchEvent 区别,调用顺序
dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent 方法顺序以及使用场景
滑动冲突,如何解决
事件分发机制
事件分发解析
dispatchTouchEvent, onTouchEvent, onInterceptTouchEvent 方法的使用场景解析
简述 View 绘制流程
onMeasure, onlayout, ondraw 方法中需要注意的点
如何进行自定义 View
view 重绘机制
Android LayoutInflater 原理分析,带你一步步深入了解 View(一)
Android 视图状态及重绘流程分析,带你一步步深入了解 View(二)
Android 视图状态及重绘流程分析,带你一步步深入了解 View(三)
Android 自定义 View 的实现方法,带你一步步深入了解 View(四)
Android Window、Activity、DecorView 以及 ViewRoot
Window、Activity、DecorView 以及 ViewRoot 之间的关系
常见的 IPC 机制以及使用场景
为什么安卓要用 binder 进行跨进程传输
多进程带来的问题
AIDL 使用浅析
binder 原理解析
binder 最底层解析
多进程通信方式以及带来的问题
多进程通信方式对比
AMS,WMS,PMS 创建过程
AMS,WMS,PMS 全解析
AMS 启动流程
WindowManagerService 启动过程解析
PMS 启动流程解析
为什么会发生 ANR?
如何定位 ANR?
如何避免 ANR?
什么是 ANR
如何避免以及分析方法
Android 性能优化之 ANR 详解
注意:内存泄漏和内存溢出是 2 个概念
什么情况下会内存泄漏?
如何防止内存泄漏?
内存泄漏和溢出的区别
OOM 概念以及安卓内存管理机制
内存泄漏的可能性
防止内存泄漏的方法
屏幕适配相关名词解析
评论