前言

当你开始开始去跳槽面试的时候,明明只是一份15K的工作,却问你会不会热修复,懂不懂性能优化,火箭造得让你猝及不防,结果就是凉凉;现如今市场,热修复、性能优化、NDK、APP开发、架构、源码等可以说是现在高级Android开发求职的必备技能。

早期的鸟儿有虫吃,现如今做开发的门槛越来越高。

但是,术业有专攻,总有一些技术牛逼的程序员可以吊打、碾压面试官!

本人经常隔段时间就偷偷投点简历,请假出去面试几次,目的不是想跳槽,主要是为了看看市场上的技术流行趋势,顺便检验一下自己的水平,当然,如果面到了心仪的公司或者大厂,那不是更好嘛,哈哈哈!

前段时间收到了字节跳动的面试,虽然有点小震惊,但还是用平常心对待了。结果一不小心,面试的时候就吊打了面试官。

前后一个半小时的面试过程全程没卡壳,项目和算法全部搞定,甚至聊到了面试官的盲点

面试题目

1.一个创业公司

(发现问下来几乎全是java基础知识,几乎没有android知识)

先是笔试:

  • 生产者消费者模型用线程方式实现、按元素大小拼接两个链表
  • 同步和异步的区别
  • 阻塞和非阻塞的区别
  • 泛型擦除
  • 集合中线程安全的类和非线程安全的类(SparseArray和ListArray的区别,SparseArray怎么存数据、取数据)
  • Gradle插件怎么做
  • https怎么实现防抓包
  • 封装第三方库等等;

2.一个五六百人的民企

  • 线程池
  • 消息推送(自己做一个消息推送怎么实现)
  • Exoplayer相对于系统的MediaPlayer有什么优点
  • h5面面加载缓存,和原生怎么传递数据
  • MQTT和XMPP有什么区别,为什么会有那么多协议
  • https的原理,中间人攻击
  • 怎么中断一个线程

3.大厂

(多家公司面试题汇总,一些我认为的简单或是常规问题就不罗列了,全是我自己之前没怎么关注的问题,所以有时第三方库烂大街的原码分析要看,但有些关键点,其实很多博文可能都没分析到,需要自己多想想,自己主动去思考)

  • 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怎么实现进程间通信的,怎么注册服务的。。。。

。。。。还有很多题,就不一一举例了,只能说给自己一个教训,很多东西看深点就不会多问一点就不知道了。

4.创业公司想招团队负责人

  • 做过哪些性能优化,Leakcanery的原理,怎么检测内存泄漏的
  • android的新技术你用了哪些
  • 你认为你应用中做得比较nb的地方有哪些,你认为你项目中解决了哪些技术难点等等。。。

5.我认为反常规的面试

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学习方向及思路(详细的内容太多了~),提供给大家:

对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,如今整理的资料不知不觉居然已经有将近80G了,在这里作为读者福利免费分享给大家,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!

资料获取传送门:点击免费获取Android架构设计

群内有许多技术大牛,有任何问题,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~

为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!希望读到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!

Android架构师之路很漫长,一起共勉吧!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

到这的您能点个小赞和关注下我,以后还会更新技术干货,谢谢您的支持!**

Android架构师之路很漫长,一起共勉吧!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

最强整理!写给程序员的Flutter详细教程,大厂直通车!相关推荐

  1. android插件化好处,写给程序员的Flutter详细教程,面试必问

    前言 先简单交代一下背景吧,本人毕业于某不知名985的本硕,17年毕业加入阿里,今年下半年跳槽到了头条,一直从事后端研发相关的工作. 之前没有实习经历,算是两年半的工作经验吧.这两年半之间完成了一次晋 ...

  2. 写给程序员的Flutter详细教程,大厂直通车!

    开篇 说一下我大概的情况.渣本毕业,工作已经有快3年了,从高中就开始玩小破站.无论是学习还是日常放松都是在b站.大学主学的软件技术专业,所以,入职bilibili是我大学时期给自己定的小目标. 在学校 ...

  3. 安卓交流软件!写给程序员的Flutter详细教程,技术详细介绍

    雪上加霜 本人一名Android程序员,今年29岁了.大厂小厂都呆过,现在在腾讯工作!明明工作顺利,家庭和睦儿女成全,但是总是会感觉到,一股无形的压力,推着我走!作为一名程序员我最怕的不是996,也是 ...

  4. 写给程序员的Flutter详细教程,实战解析

    导语 Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来. 音视频的开发,往往是比较难的,而这个比较难 ...

  5. android 三级级联筛选列表,写给程序员的Flutter详细教程

    android:groupIndicator="@null" android:scrollbars="none" /> activity中 核心代码 // ...

  6. Android开发者跳槽必备:写给程序员的Flutter详细教程,大厂直通车!

    一.引言 现在已经是十月份的月末了,金九银十,这个找工作和面试的热潮已经渐渐退隐. 潮涨潮退,有的人从里面收获了心仪的offer:有的人走了一趟,一无所获,或者收获寥寥,无甚满意:还有的人在观望,等待 ...

  7. 直接上干货!5年经验Android程序员面试27天,大厂直通车!

    前言 我最近在筹备Android面试的相关文章,我发现,Framework是一个十分重要的点,被不少大厂所看重. 如图,这是我们的一个技术交流群里面的对话↓↓↓ 前阵子我写的Android技术文里面, ...

  8. 5年经验Android程序员面试27天,大厂直通车!

    前言 我最近在筹备Android面试的相关文章,我发现,Framework是一个十分重要的点,被不少大厂所看重. 如图,这是我们的一个技术交流群里面的对话↓↓↓ 前阵子我写的Android技术文里面, ...

  9. 写给前端工程师的 Flutter 详细教程

    本文作者:hicc,腾讯 CSIG 前端开发工程师 最爱折腾的就是前端工程师了,从 jQuery 折腾到 AngularJs,再折腾到 Vue.React.最爱跨屏的也是前端工程师,从 phonega ...

最新文章

  1. docker安装、源、网络
  2. 【Python】校选课 第四周作业 py3.0
  3. 列表和表格---学习笔记02
  4. Truffle 、Geth、TestRPC 在私有链上搭建智能合约
  5. 【web前端开发】介绍div+css的6个优点
  6. sharepoint SPFolder的使用
  7. SFB 项目经验-82-Active Directory Replication Status
  8. 基于JavaSpringMvc+mybatis实现学生信息管理系统
  9. 计算机无法访问桌面,桌面无法显示_电脑桌面显示:无法访问,你可能没有权限使用网络......
  10. 3dmm人脸配准/重建:gold standard algorithm
  11. RNA 14. SCI 文章中差异表达基因之 蛋白互作网络 (PPI)
  12. 应知应会的Word图片技巧(转)
  13. 每一个计算机主机有且只能有一块硬盘,2014年《计算机基础》期中试卷.doc
  14. 红米Redmi K40手机刷入Magisk获取Root教程
  15. · 电动汽车(EV)充电标准及其差异
  16. 学习计算机网络必看的书
  17. 【转】美国50州气候及学校推荐
  18. 机器学习(一):简介
  19. Anaconda安装教程及使用教程(图文)
  20. 疫情之下代运营行业揭秘,找速卖通代运营为什么要认准官方代运营商?

热门文章

  1. 刘晓燕《不就是语法和长难句吗》第一章个人笔记
  2. LeeCode1715. 苹果和橘子的个数
  3. 自然语言处理之数据平滑方法
  4. 一篇文章说清楚shared_ptr,unique_ptr的区别和关系
  5. 关于AJAX开发技巧的想法
  6. 12弦电吉他音源 Orange Tree Samples Evolution Rick 12 Kontakt
  7. 看美剧,学英语,背单词,赚美刀
  8. hive 转拼音udf_<Zhuuu_ZZ>HIVE(十二)UDF自定义函数
  9. 深入理解 RecyclerView 的绘制流程和滑动原理,直面春招
  10. 联发科MT6582开发板模块/方案开发资料