前言
最近一个月找工作,9个面试0个offer,实在有点可笑。心态从最初的踌躇满志要进入一家自己喜欢的公司,慢慢变成随便一家过得去的公司给个offer就去,最后到无心无力再继续找工作。还好听了人劝,没有急着辞职,不然要吃土了。
期间通过思维导图的形式做过一些笔记,放在这里当做纪念。
正文
全篇共分为5个模块,分别是:Java、Android、常用三方库、NDK和其他。
1、Java
集合:HashMap、LinkedHashMap、ConcurrentHashMap都有被问到,需要知道其中原理
Java虚拟机:类加载器问得比较多;
Java并发:线程、线程池、锁原理都是高频面试点。
2、Android
性能优化:必问
Activity启动流程:高频
广播原理:问到过一次,可惜当时没准备
Service原理:“startService和bindService区别”问到很多次
RecyclerView缓存机制:问到过一次(没准备,扑街了)
Android流程:从没问到(似乎白准备了)
插件化:问得较少(大部分面试官似乎也不懂)
热修复:问得较少(问到的概率仅仅比插件化多一丢丢)
组件化:高频
组件化没有做笔记了,面试题主要集中在组件化的实现,Arouter页面跳转原理,不同组件间传参实现与原理。
PMS:无人问津
WMS:“Window和View的关系”有问到过几次
3、常用三方库
OkHttp:问到OkHttp,一般会问缓存策略和连接池(需要加深理解)
Retrofit:问到过一次怎么监听下载进度(唉)
RxJava:问到过两次操作符的意思(问得都很浅,操作符用法)
Glide:超高频,缓存机制必问(其实除了缓存,啥都没看懂)
EventBus:问到过几次方案的横向对比,为啥选EventBus
4、NDK
C++:NDK的基础,没问到过
CMake:一次
JNI:JNIEnv是这块的必问点
FFmpeg:错误地认为软解比硬解性能更好,可能正是我没有offer的原因吧
OpenCV:没问过
OpenGL ES:一家搞直播公司问到过一次(后悔当时要价太高……)
5、其他
网络:HTTP、HTTPS高频
Kotlin:很多面试官提过,但是不问(他们觉得太简单还是也不熟呢?)
Flutter:只是了解一点了(有暖用?大部分公司要的是RN)
最后
经过这几次面试,有了两点感悟。
-
千里马常有,伯乐不常有。
一个好的技术面试,我觉得应该是面试官提出技术含量高的问题,然后我水银泻地般地解答给面试官听。然而没有一次面试是这样的,岗位也许与我的技能或工作经验并不匹配,面试官只会挑他们感兴趣的提问,并且会回避他们不擅长的知识。这样的面试无法体现自身的价值,还是静下心来,继续提高自己,不要迷失方向。
-
职业规划很重要。
通过了技术面试之后,一般都有领导过来谈职业规划,在几家物联网相关的公司,总被问到作为一个Android开发加入物联网相关公司,自身是如何定位的。总说纯手机App开发太饱和了,希望以后从事深入的物联网或者音视频开发,对于物联网或音视频,我又能做什么呢?