面试|历经了7次面试,腾讯面试官给我的建议(附(Android岗经验分享))
大家好,我是一名开发者也是一位面试官,现在在腾讯某事业部担任开发专家的职位。面试,对于我们求职者来说,并不陌生,而且在新一轮的金九银十中,大家对“如何高效准备面试”这个话题呼声尤其高。
的确,作为开发者,大家的时间都很宝贵,尤其是在职跳槽,还需要一边上班一边投简历。
投了好几百份简历,好不容易接到一个面试电话,慌慌张张,不知道如何准备面试,到处搜集各种面试技巧。
殊不知主次不分,舍本逐末,做了大量无用功。记得,我刚开始参加面试的时候就是这样,技术不成体系,花费很多时间面试上,却没有拿到一个心仪的offer。
我相信经历过这种情况的开发者都知道,这样非常容易打击自己的面试自信心,越来越害怕面试就会导致在面试中紧张,会的忘记、不会的还是不会。
这是一个逆性循环,结果只会越来越糟糕。所以,为了帮助大家提高面试效率,我这里说一下面试中应该注意什么以及**如何搭建技术体系,**复习来准备面试。
一、什么是技术体系?有什么用? 所谓**“知识体系”,**指的是把大量的不同的零散的知识点,通过内化、存储、整理、等方式组合起来,形成以点成线、以线成面、形成系统的、有序的、清晰的脉络结构。
我们在工作中解决问题或者面试时,会使用自己的知识体系做出选择,不论是潜意识还是显性意识.每一次的抉择和行为都将迭代我们的知识体系,让其更加明确清晰,找到自己不足的地方,优化可以改进的地方,明确接下来的方向,提升自己的全局整体思维,强化当下的正在使用的技能等。
二、如何搭建技术体系 这里可以看一下我自己做的思维导图,通过思维导图的学习步骤,无论是在工作中还是在面试中都帮了我很多,可以说我进腾讯离不开它的帮助。
文章图片
不清晰的朋友,思维导图网盘下载链接:https://pan.baidu.com/s/1KWzzCiqTWs5CwEwYCdp9rQ提取码:ur09在思维导图中我把Android技术栈分为了十三个模块**,并整理相关PDF文档和资料,需要的朋友可以点击下方卡片获取。**
十三个模块大致为了以及核心知识点:一,Java高级
- 反射
- 注解
- 泛型
- 多线程:线程、线程池、Synchronized、volatile、ReentrantLock
- JVM:类加载、内存模型、垃圾回收机制、强弱虚引用
- 集合容器:Collection、Map
多线程是开发人员必不可少的技术点,也是初学者不太容易掌握好的一个难点。要想设计出优秀的程序,那必然需要合理的线程调度。
- Handler:Handler、Looper、Message
- ThreadLocal
- AsyncTask
在 Android 的日常开发和源码阅读中会经常碰到相关知识,掌握这些网络基础知识,也是 Android 程序员真正迈向高阶的过程中必备的一些基本技术素质之一。
- HTTP、HTTPS
- TCP UDP
- TCP/IP
- SOCKET
- 网络请求过程:三次握手、四次挥手、证书、断点续传
- Surface
- View: 自定义 View(measure、layout、draw)
- Window:PhoneWindow、DecorView、ViewRoot
- 事件分发机制:滑动冲突、dispatch
- 动画:帧动画、View动画、属性动画
- ListView工作原理
- RecycleView工作原理、与ListView比较
- Webview:js通信,加载优化
- BitMap:加载效率、缓存策略、内存计算
- Drawable
- Glide加载大图
- 系统启动流程
- 应用启动流程
- 进程间通信:IPC机制、Binder原理、AIDL
- 构建:Grale、APT编译注解处理器
- apk打包:打包流程、v1和v2签名、分包multidex、加固
- Dalvik与ART
- SystemServer:ActivityMagangerService、PackageManagerService,WindowManagerService
- Dalvik与ART
- JNI:JNI基础、NDK
Android 四大基本组件分别是 Activity,Service 服务,Content Provider内容提供者,BroadcastReceiver 广播接收器。
- Acitivity难点:四大launch模式、启动流程、加载布局流程
- Service难点:启动方式、启动流程、应用场景
- ContentProvider难点:生命周期、启动流程、原理
- Broadcast难点:生命周期、注册方式、启动流程
作为一个 Android 程序员,性能优化是无法避开的事情,并且性能优化也是 Android 中最有挑战的工作之一,更是每个工程师都需要掌握的核心技能。
- 启动优化
- UI优化
- 内存优化
- 卡顿优化
- 网络优化
- 数据库优化
- 包体积优化
- ANR
Android 平台上的数据库框架非常多,但是有一个共同特点就是基于对象关系映射(ORM) 模型的。实现的目标也都是不需要写 SQL 语句,通过对对象的操作保存和操作数据。
- 图片加载: Gride、Fresco、Picasso、Android-UIL
- 网络通信:Retrofit、Okhttp、Volley
- 异步处理:RxJava、RxAndroid、RxBinding、EventBus
- 数据库:
- 跨平台:Flutter、ReactNative、Weex
- 模块化
- Hook技术
- 插件化:DroidPlugin、VirtualAPK 、Small、RePlugin
- 组件化:ARouter、CC
- 热更新:Tinker、AndFix、Robust
- 动态化
- 扩展函数
- 构造函数
- 协程
- Jetpack:ViewModel、LiveData、Lifecycles、Navigation、Room、Paging、WorkManager、DataBinding
- MVC
- MVP
- MVVM
- 设计模式:六大原则、常见设计模式
- 音视频基础
- ffmpeg
- WebRTC
- OpenGL
- Vulkan
- OpenCV
文章图片
文章图片
快速打包通道:点击下方卡片即可
三、面试中应该注意什么? 1,了解公司(背景+产品)
我参加过的几乎每一家公司的面试,都会问这个问题,比如
- “你对我们公司有什么了解?”
- “你为何要选择我们公司”
- “你对我们公司的产品技术架构上有什么建议?”
- “…”之类的
这些问题其实都在考察你对公司的了解。那么如何了解一家公司呢?
最简单的方法,就是让HR提供一些材料。当然,有一些公司在发邮件通知你面试的时候,附件一般也会带上公司相关的介绍。2,准备好简历
【面试|历经了7次面试,腾讯面试官给我的建议(附(Android岗经验分享))】在面试的前一天,要准备并且打印好几份简历,并且一定要熟悉简历项目里的每一项技术,尤其是你的工作经历,你要回忆一下,要能够展开详细说。
总体来说,面试就这几个方面的注意点。
四、总结 知识体系不是一蹴而就的,而是贯穿我们的生活经历和对事物的思考慢慢积累起来的,中间需要海量的知识支撑,不断改变,不断适应。
而这是需要我们不断学习的,我希望大家能在学习不断提升自己的技术能力,并且面试中拿到自己心仪的offer。我们一起努力,共勉!
快速通道:(需要的朋友可以点击下方卡片获取。)
推荐阅读
- 热闹中的孤独
- 2018-02-06第三天|2018-02-06第三天 不能再了,反思到位就差改变
- 尽力
- 你到家了吗
- 这辈子我们都不要再联系了
- 死结。
- 我从来不做坏事
- 时间老了
- 喂,你结婚我给你随了个红包
- 赢在人生六项精进二阶Day3复盘