现在的市场环境确实不大好, 裁员与及在预谋裁员的公司一大把, 当然招人的公司也有. 楼主这几天去面试了几家公司, 目的有以下几点:
1, 跟现在老东家签约的合同快到期了, 想出来看看新机会, 有好 - 机会就考虑挪挪窝了;
2, 现在外面的市场是个什么样子, 求职的人和招聘的人比例;
3, 市场对于一个高级 / 资深开发工程师的要求是什么样子(毕竟纸上得来终觉浅, 觉知此事须躬行);
4, 年龄到底是不是个坎.
面试机会的渠道
楼主从 3 月初开始先在北邮人论坛 (自己北邮毕业的, 倾向于学校论坛) 上看社招版块, 投了五家, 有两家约面了. 之后在 Boss 直聘网和猎聘网上填写信息, 上传自己做好的简历附件. 周六刚填完, 就有不少猎头打电话, 管我要简历, 加微信号, 然后自报家门有哪些公司可以内推的, 一开始没经验, 想着猎头能推荐, 就让他们内推呗. 结果后来发现联系的猎头都快要把自己手机打爆了, 而且路数都一样, 都是那么几家公司帮忙推荐. 周一赶紧把猎聘网上的简历撤下来了, 给我的感觉就是猎聘网上几乎全是猎头吧, 而且后面发现通过猎头推荐的能去面试的公司几乎没有, 可能帮忙递了 20 家, 能有 2 家约面就不错, 而且还不是应聘公司跟面试的人单约, 是猎头两边约, 这样面试时间可能得来回改, 可能猎头生怕跳单吧. 猎头会在面试前一天各种提醒你明天要面试啊, 带简历啊, 当天又问你出没出发啊, 提醒你面完了给他们打电话呀, 有时没面完就开始给你打电话, 发微信, 询问面试情况怎样. 可能生怕跳单了? 反正联系得太频繁了, 搞得我现在对猎头很反感, 其实他们跟房屋中介一样, 如果你让告诉中介要租房或是买房, 他们一段时间内会不停得给你发消息打电话, 约你出来看房子. 通过猎头找工作肯定有一定的成功率, 但我是不想再通过猎头找工作了.
再说说 Boss 直聘吧, 这上面就清爽多了, 很多公司直接把招聘职位, 要求, 公司简介, 员工待遇, 岗位薪水等写清楚了, 他们可以在上面搜寻应聘者的简历, 有意向的直接约面了. 应聘者也可以看看各家公司的应聘职位, 自递简历, 自报家门, 如果对方有意向, 直接约面. 我大部分面试机会都是从这上面获取的. 如果是猎头在这上面联系我, 我一般都直接略过了.
下面说说自己面试了几家公司遇到的一些面试题目吧, 感觉无论自己怎么准备, 好像永远达不到面试官满意的程度, 或者说自己总有很多不会的, 稍微一问深了, 就不会了, 这也怪自己技术栈深度不够, 广度不够, 没面过, 没经验. 而且各个面试官真是看心情, 路数完全不一样, 有的只问 java 特别特别基础的知识, 比如面向对象的设计原则, 比如 char 占几个字节, 能不能存中文... 有的问 Android 性能优化, 有的只考算法, 有的可能来个脑筋急转弯. 不过这也激励自己要努力, 不能再每天无所事事的, 做完公司那点活了, 不去主动更新自己, 也知道自己到底有几斤几两了, 当别人问自己的职业规划时, 自己也思索着, 以后到底想发展成什么样.
面试题目
- 一个创业公司
(发现问下来几乎全是 java 基础知识, 几乎没有 Android 知识)
先是笔试: 生产者消费者模型用线程方式实现, 按元素大小拼接两个链表
同步和异步的区别
阻塞和非阻塞的区别
泛型擦除
集合中线程安全的类和非线程安全的类(SparseArray 和 ListArray 的区别, SparseArray 怎么存数据, 取数据)
Gradle 插件怎么做
https 怎么实现防抓包
封装第三方库等等;
- 一个五六百人的民企
线程池
消息推送(自己做一个消息推送怎么实现)
Exoplayer 相对于系统的 MediaPlayer 有什么优点
h5 面面加载缓存, 和原生怎么传递数据
MQTT 和 XMPP 有什么区别, 为什么会有那么多协议
https 的原理, 中间人攻击
怎么中断一个线程
- 大厂
(多家公司面试题汇总, 一些我认为的简单或是常规问题就不罗列了, 全是我自己之前没怎么关注的问题, 所以有时第三方库烂大街的原码分析要看, 但有些关键点, 其实很多博文可能都没分析到, 需要自己多想想, 自己主动去思考)
AsyncTask 原理, 在子线程中定义 AsyncTask 实例可不可以, 为什么不可以呢
OkHttp 原理 (说了那些拦截器) 怎么实现多路复用的(这个主要从 https 实现多路复用的原理上谈, 用了二进制分帧, 那 okHttp 其实就是按分帧来读取, 具体可以自己看看相关博客)
Handler 的机制, Android 内部是怎么实现发送延时消息,(一开始以为是用个类似于 Timer 之类的定时任务, 后来才知道是用系统开机时间 + 延时时间得到一个时间 T1, 当手机当前时间到了 T1 的话, 就会把消息发送出去. 但有可能 UI 线程被阻塞了, 所以到了 T1 时间, 也不能确保 100% 这个 Message 被发出去的)
性能优化减少 apk 体积, 怎么减小 so 包的体积呢
怎么给一个应用加固
ANR 的原理, 怎么从 trace.log 中找到 ANR 的原因及出现的地方(找到 main thread), 如果只是在主线程中 Thread.sleep(10S), 会不会出现 ANR
JNI 层的 Crash 怎么定位(通过 ndk 中相应的工具 addr2line ndk-stack 等可以定位到行)
广播为什么能作为四大组件, 有什么特殊之处(经面试官提醒, 能实现一对多通信), 本地广播的实现原理
Android 中设计 Fragment 的好处, 那有了 Activity 为什么还要设计出 Fragment 来呢(解耦)
ViewStub 为什么能实现延迟加载(它没有进行测量和绘制, 只在调 flate 或是 setVisibility 时才会加载进布局)
Binder 怎么实现进程间通信的, 怎么注册服务的....
.... 还有很多题, 就不一一举例了, 只能说给自己一个教训, 很多东西看深点就不会多问一点就不知道了.
- 创业公司想招团队负责人
做过哪些性能优化, Leakcanery 的原理, 怎么检测内存泄漏的
Android 的新技术你用了哪些
你认为你应用中做得比较 nb 的地方有哪些, 你认为你项目中解决了哪些技术难点等等...
- 我认为反常规的面试
1)直接拿着我做的公司某个应用开始一通批判, 觉得我自己对自己做的应用都不负责任, 还有什么理由来应聘你, 问你认为你最善长做的是什么, 比如 UI, 功能, 性能优化等, 你要说 UI 吧, 你这 UI 做得怎么怎么的, 你要说性能吧, 应用性能也确实一般般, 让我觉得我没有啥善长的. 回来老公说我们公司害了我, 因为我现在的公司做的应用要求太低了, 能用就行. 但是别人对我要求松, 我得对自己严要求, 高标准
2)上来弄个类似于脑筋急转弯的题
- Set<Short> stack = new HashSet<>();
- for(Short i = 0; i < 100; i++) {
- stack.add(i);
- stack.remove(i-1);
- }
- System.out.println(stack.size());());
我以为会抛异常, 面试官问要是不抛, 又会输出什么, 我想着输出 1 呢. 后来自己下来试验了一把, 发现输出 100, 让我百思不得其解. 后来百度搜索, 经别人提点才知道因为 i-1 这里用到了隐式类型转换 i-1 会转成 int 型的减法, 所以在 remove 时, 根本没有那个对象, 所以无论怎么调 stack.remove(i-1)都不会有元素移出, 我不得不感叹面试官设计的陷阱. 后面又问了两个矩阵传送门问题, 应该有取巧的办法, 可能我脑子真是太笨了, 最终也没有想出来.
面试感言
自己的总体感受是: 现在市场大环境不好, 各大互联网招人的部门都是些边缘部门或是新设部门, 有些甚至是光杆司令或是完全全新的部门, 从 0 个人开始招, 先招团队负责人等. 现在市场是供过于求, 有不少被公司裁掉的员工, 在这个节点找工作, 导致楼主去面试, 面试官一上来就问你现在是离职态还是在职. 如果自己不够优秀, 面试官有很多选择, 是不愿意付高价来招聘你的, 按道理什么时候都这样吧, 只是现在有点过了. 市场供过于求, 应聘公司有得挑, 不够优秀, 可有可无的人, 一般会倾向于压低工资.
通过这轮面试, 让我知道了自己的差距, 自己的研究的东西太浅薄了, 而且没有自己的优势或者说专长. 而且自己作为一个女程序员, 发现 HR 面时很吃亏, HR 好像提前给你考虑了各种因素, 结婚了是吧, 有没有小孩, 有小孩你得照顾小孩吧, 我们这里很忙的. 即使你再想证明自己, 工作方面不会受影响, 但他们还是不想冒这个险, 就像我当年校招找工作, 去自己老家某银行面试, 省行不要女生, 可以去自己家里的分行. 因为你要结婚, 要生孩子, 要休产假, 要照顾家庭. 我什么都没说呢, 就把我给否完了, 给我先下个定义, 难不成想让女程序员都不要结婚不生娃么, 你也有媳妇啊.
总的来说, 自己劣势挺明显的, 没有在某方面有很深研究, 没有什么优势, 知识面的广度和深度都不够, 这方面要加强, 同时作为一个有娃的女程序员, 已经被别人否掉了 50% 了, 所以必须从技术方面加强吧.
工作我还会继续找, 人都是追求上进的, 有好机会还是会考虑挪窝的. 我不想在我 30 岁就干一份可以养老的工作, 技术我也会努力去提升, 愿我和大家都会有一个更好的未来.
资料分享欢迎 Android 工程师朋友们加入安卓开发技术进阶互助: 856328774
免费提供安卓开发架构的资料 (包括 Fultter, 高级 UI, 性能优化, 架构师课程, NDK,Kotlin, 混合式开发(ReactNative+Weex) 和一线互联网公司关于 Android 面试的题目汇总.
合理利用自己每一分每一秒的时间来学习提升自己, 不要再用 "没有时间" 来掩饰自己思想上的懒惰! 趁年轻, 使劲拼, 给未来的自己一个交代!
来源: http://www.jianshu.com/p/742aa2609a32