字节跳动五面都过了,结果被刷了,问了hr缘由竟说是...

说在前面,面试时最好不要虚报工资。原本字节跳动是很想去的,几轮面试也经过了,最后没offer,本身只想到几个缘由:一、虚报工资,比实际高30%;二、有更好的人选,这个可能性不大,我看还在招聘。我是面试Android开发的,3年经验,下面是面试流程:前端

一面

1.插件化。启动activity的hook方式。taskAffity。
2.okhttp支持HTTP2?http2的功能有哪些?tcp方面拥塞控制?tsl的握手和具体的非对称加密算法。非对称名称
3.handler的post(Runnable)如何实现的。callback,runnable,msg的执行优先级。
4.阻塞是怎么实现的?为何不会阻塞主线程?
5.求二叉树中两个节点之间的最大距离。
6.206含义,未修改资源是哪一个,302含义,301含义
7.多进程通讯问题。binder优点。aidl生成的java类细节。多进程遇到哪些问题?
8.动态代理传入的参数都有哪些?非接口的类能实现动态代理吗?ASM的原理
9.Application和Activity在Context的继承树上有何区别?两者使用上有何不一样?
10.任意一颗二叉树,求最大节点距离java

二面

1.设计一个日志系统。
2.内存泄露的分类。怎么查看内存泄露的问题
3.touch事件源码问题。
4.组件化的问题。module和app之间的区别。moduler通讯是如何实现的。
5.native奔溃的日志采集,怎么处理?
6.注解实现一个提示功能:若是int的值大于了3须要提示。git

三面

1.介绍下flutter的启动流程
2.介绍下flutter与weex的区别
3.组件化介绍一下
4.webview中与js通讯的手段有哪些?
5.介绍下flutter_boost的原理程序员

四面

1.适配器和装饰模式各自特色和使用场景
2.视频编解码是怎么作的
3.三色球排序github

HR面

1.询问了除字节跳动之外,还在看其余工做机会么?分别是什么
2.字节、XXX公司、XXX公司,你的优先级是什么,为何?
3.以前薪资待遇是多少?你指望的薪资是多少?
4.平时有什么爱好?
5.了解职位需求吗?
6.有没有想问的?web

这是我在某论坛看到的故事,我知道咱们不少程序员都有一个大厂梦,但如何针对大厂进行面试准备,如何和 HR 聊天,好比谈钱等等,不少程序员就显得手足无措了。本文就根据本身一些看法谈谈这些问题。

什么是合适的候选者

在介绍如何面试以前,这里先从公司的角度来分析:”到底什么样的候选者是公司所须要的技术人才?“就我在如今这家公司的一些面试官经验来讲,一个具备以下特征的Android程序员是咱们所须要的:面试

  1. 具备本科及以上学历(名校更好)
  2. 具备2年及以上的工做经验(名企更好)
  3. 技术扎实,有技术追求和工做激情
  4. 良好的沟通和协做

在上面的四条中,其中第3条是最为重要的,即技术,技术是决定可否经过面试的最重要最直接的缘由。通常来讲,越是大公司,其对技术的要求就越高,尽管部分岗位并不须要那么好的技术,可是为了对候选者作出区分,其面试过程仍然会面试一些稍微深刻的话题,相信你们都有所体会。算法

除了技术之外,良好的沟通和协做能力也是比较重要的。也许不少人以为这个比较抽象,内心会想:”你怎么知道我有没有良好的沟通和协做能力呢“?其实这个问题并不难,面试过程就是一次沟经过程,若是不能和面试官很好地沟通,这就说明候选者的沟通有问题。如何很好地和面试官沟通呢?给以下几点建议:数据库

  • 礼貌和尊重。
  • 听懂面试官的问题并直接回答。
  • 谦虚谨慎、态度友好。

下面对学历和工做经验作一些说明,学历并非一个硬性要求,即便候选者学校不怎么好也是有可能经过面试的,这就要求候选者技术很是扎实。而工做经验,之因此是2年以上,这是由于社会招聘的对象通常都是有必定工做经验的,而1年工做经验略短了点,拿百度来讲,社招的最低级别通常为T4,差很少恰好就是2年经验左右。编程

这里作下总结,理想的候选者应该是这样的:

  1. 扎实的技术功底,有技术追求(必须)
  2. 态度、沟通和为人都很好(必须)
  3. 2年左右工做经验(基本必须)
  4. 名校、名企、高学历(非必须,加分项)

基原本说,知足1和2就能经过面试,3和4都是次要条件,可是通常来讲不知足3就很难知足1,不要说特例,木有参考意义。

因而可知,技术是面试结果的决定因素。那么到底技术掌握到什么程度才能比较轻松地经过面试呢?说了那么多,好像和Android没有一点关系,下面就开始以Android为例来分析下面试过程所需的技术。

技术知识梳理目录

下面的全部技术知识点详细内容都整理在了开源项目【GitHub】,有须要的能够自取。

1.Java 基础知识
  • 面向对象的基本思想
  • Object类相关:Object类的几个关键函数、String涉及到的常量池概念,序列化 & 反序列化。
  • 重要关键字:final、static。
  • 内部类:内部类的分类、应用场景、内部类编译成class后是怎么样的。
  • 抽象类 & 接口:区别、应用场景。
  • 编码:编码的目的、分类。
  • 异常:异常体系、自定义异常。
  • 注解:注解的基本概念、分类、编译时注解 & 运行时注解。
  • 容器:重要容器的内部实现、容器间的对比。
  • 内存模型。
  • 垃圾回收。
  • 类加载的过程。
  • 泛型:分类、通配符 & 上下边界、泛型擦除。
  • 反射:使用。
2.Android 基础知识
  • Dalvik、Art虚拟机
  • Activity:生命周期、launchMode。
  • Fragment:生命周期、懒加载、两种Adapter之间的区别。
  • BroadcastReceiver:基本概念、广播分类、权限。
  • Service:生命周期、onStartCommand的返回值、startService和bindService的区别、相同进程 & 不一样 进程的交互、IntentService实现原理。
  • 重要的工具类 & 源码实现:AsyncTask、HandlerThread、Handler、IntentService、LruCache、LinkedHashMap、SparseArray。
  • RecyclerView:缓存原理、和ListView的对比、Adapter如何适配多种layout。
  • 存储:数据库升级 & 优化、ContentProvider,SharePreference。
  • SDK版本升级的兼容问题。
  • Android的权限管理机制。
3.图片
  • Bitmap相关:Bitmap的大小计算、质量、inJustDecodeBounds、inBitmap。
  • 几种图片格式的对比、压缩。
  • 大图加载:BitmapRegionDecoder
4.算法

别无捷径,刷题,可是刷题的时候,要按照题的类型去总结。

5.开源框架
  • RxJava:操做符的应用场景、重点操做符的内部实现、和RxJava的对比。
  • Glide:流程、缓存相关的实现。
  • Retrofit:流程、动态代理 & 注解解析。
  • OkHttp:流程、队列实现、缓存实现。
6.性能
  • 性能优化技巧:启动速度优化、布局优化、内存优化、电量优化、APK大小优化、列表滑动优化。
  • 性能优化工具:TraceView、Systrace、调试GPU过分绘制 & GPU呈现模式分析、Hierarchy Viewer、MAT、Memory Monitor & Heap Viewer & Allocation Tracker、LeakCanary、Lint。
  • ANR
  • ANR缘由
  • ANR产生过程源码分析
  • 信息收集过程
  • trace文件分析
  • 分析基本流程
  • 具体示例
  • 如何避免产生ANR
  • 性能实践:解决过的性能问题,从 遇到问题、分析问题、解决问题、结果 四个点进行阐述。
7.View
  • 绘制流程:measure、layout、draw三个关键流程。
  • 事件分发:事件分发的原理、处理过的滑动冲突问题。
  • 自定义View:Canvas & Path,实现过的比较复杂的自定义View。
8.架构
  • MVP:MVP的思想 & 优劣势、在项目中的应用、
9.源码
  • AMS
  • WMS
  • Binder
  • 应用启动流程
  • APK相关知识点
  • APK构成:resources.arsc组成、AndroidManifest.xml、aapt做用及原理
  • APK打包过程
  • APK安装过程
  • APK签名 & 校验原理
  • dexopt原理
10.网络

基础知识:看一下对于 <<计算机网络>> ,重点是网络分层模型、TCP/UDP、HTTP/HTTPS。

11.设计模式

按照23种网络模型、三个分类进行总结,每种设计模式包含如下三个方面,至少要准备经常使用的几个:

  • 基本概念:UML图、简单例子、应用场景、优点 & 劣势。
  • Android源码中的实现
  • 项目中的应用
12.多线程
  • 看并发编程的艺术,这本书的目录就是多线程最好的知识体系。
  • 遇到过的多线程问题、怎么解决的。
13.Gradle
  • 经常使用配置。
  • 多渠道打包。
14.插件化
  • 插件化的核心思想。
  • 几种插件化框架实现的原理。
15.组件化
  • 组件化的优点。
  • Arouter:使用方式、实现原理。
16.Kotlin

有用到的能够看看。

17.多媒体

音频、视频播放。

18.大前端

ReactNative、Flutter:没学过的能够了解一下思想。

19.JNI

调用实现方式。

全部的知识点都整理在了开源项目【GitHub】,有须要的朋友能够自取。

如何和 HR 聊天,好比谈钱等等

首先你面到 HR 了,说明你基本已经成为备选人之一了。这时候 HR 会和你聊不少问题,这些问题都是为了了解你的一些我的状况的。好比说性格啦、反应能力、情商等等。另外大部分公司的 HR 并无一票否决权,面试没有成功多半是有更好的备选人而不是由于 HR 把你卡掉了。

而后说到谈钱的一个问题。首先以最少的工资招到须要的人确定是 HR 的考核之一,因此压价是很正常的一个事情。而且上家公司的薪资也是一个很重要的参考,通常来讲涨薪幅度在 30% 以上是很牛逼的事情了,一般都在 20% 左右。

你的开价通常就是 offer 的上限了,考虑到压价的状况,你能够在本来指望薪水上上浮 1K 左右,而后能够根据面试的状况来有选择性的开价。

  • 面的不错,原本想要 16K 的,那么就多要个 1-2K 没啥问题
  • 面的通常,那就报 16 K 吧
  • 面的通常或者不大好,可是又很想进这家公司,能够酌情降低 1-2K,这个主要仍是看本身
  • 不怎么想去这家公司,随意开价

结语

若是你想去一家不错的公司,可是目前的硬实力又不到,我以为仍是有必要去努力一下的,技术能力的高低能决定你走多远,平台的高低,能决定你的高度。

若是你经过努力成功进入到了心仪的公司,必定不要懈怠放松,职场成长和新技术学习同样,不进则退。

相关文章
相关标签/搜索