目前情况:10届某民办大学本科生,实际接触Android年限6年多了,工作年限五年半(注意,我说的是工作年限,不是工作经验),今年1月份裸辞后歇了大半年,经常一周也收不到几个offer,好不容易熬到HR面,也因为薪资要求过高被放弃了,最终拿到一个并不是特满意的offer。

首先我想明确地说在目前的大环境下,移动互联网确实已经属于寒冬。尤其是Android/IOS开发,虽然说不上夕阳行业,但也离热门IT职业差了十万八千里。从之前大量小创公司因疫情原因倒闭破产,360、滴滴、携程等大厂实施裁员的新闻其实也能略见一二了。至于那些还存活着的小公司,对于移动端开发人员的要求。。。好像跑题了~还是说求职面试吧。

网上Android岗位招聘的需求来看:


要求掌握系统架构及相关技术,熟悉高级UI、framework源码,精通插件化、性能优化、Java开发经验。。。
视频面试给我的第一感觉就是题太难了,薪资低也就就算了,面试要求还贼高。

1.要做一个尽可能流畅的ListView,你平时在工作中如何进行优化的?

①Item布局,层级越少越好,使用hierarchyview工具查看优化。
②复用convertView
③使用ViewHolder
④item中有图片时,异步加载
⑤快速滑动时,不加载图片
⑥item中有图片时,应对图片进行适当压缩
⑦实现数据的分页加载

2.对于Android 的安全问题,你知道多少

①错误导出组件
② 参数校验不严
③WebView引入各种安全问题,webview中的js注入
④不混淆、不防二次打包
⑤明文存储关键信息
⑦ 错误使用HTTPS
⑧山寨加密方法
⑨滥用权限、内存泄露、使用debug签名

3. 如何缩减APK包大小?

代码

保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs。

使用proguard混淆代码,它会对不用的代码做优化,并且混淆后也能够减少安装包的大小。

native code的部分,大多数情况下只需要支持armabi与x86的架构即可。如果非必须,可以考虑拿掉x86的部分。

资源

使用Lint工具查找没有使用到的资源。去除不使用的图片,String,XML等等。 assets目录下的资源请确保没有用不上的文件。

生成APK的时候,aapt工具本身会对png做优化,但是在此之前还可以使用其他工具如tinypng对图片进行进一步的压缩预处理。

jpeg还是png,根据需要做选择,在某些时候jpeg可以减少图片的体积。 对于9.png的图片,可拉伸区域尽量切小,另外可以通过使用9.png拉伸达到大图效果的时候尽量不要使用整张大图。

策略

有选择性的提供hdpi,xhdpi,xxhdpi的图片资源。建议优先提供xhdpi的图片,对于mdpi,ldpi与xxxhdpi根据需要提供有差异的部分即可。

尽可能的重用已有的图片资源。例如对称的图片,只需要提供一张,另外一张图片可以通过代码旋转的方式实现。

能用代码绘制实现的功能,尽量不要使用大量的图片。例如减少使用多张图片组成animate-list的AnimationDrawable,这种方式提供了多张图片很占空间。

4.Android与服务器交互的方式中的对称加密和非对称加密是什么?

对称加密,就是加密和解密数据都是使用同一个key,这方面的算法有DES。

非对称加密,加密和解密是使用不同的key。发送数据之前要先和服务端约定生成公钥和私钥,使用公钥加密的数据可以用私钥解密,反之。这方面的算法有RSA。ssh 和 ssl都是典型的非对称加密。

5.设备横竖屏切换的时候,接下来会发生什么?

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

6.Android启动Service的两种方式是什么? 它们的适用情况是什么?

如果后台服务开始后基本可以独立运行的话,可以用startService。音乐播放器就可以这样用。它们会一直运行直到你调用 stopSelf或者stopService。你可以通过发送Intent或者接收Intent来与正在运行的后台服务通信,但大部分时间,你只是启动服务并让它独立运行。如果你需要与后台服务通过一个持续的连接来比较频繁地通信,建议使用bind()。比如你需要定位服务不停地把更新后的地理位置传给UI。Binder比Intent开发起来复杂一些,但如果真的需要,你也只能使用它。

**startService:**生命周期与调用者不同。启动后若调用者未调用stopService而直接退出,Service仍会运行
**bindService:**生命周期与调用者绑定,调用者一旦退出,Service就会调用unBind->onDestroy

7.谈谈你对Android中Context的理解?

**Context:**包含上下文信息(外部值) 的一个参数. Android 中的 Context 分三种,Application Context ,Activity Context ,Service Context.

它描述的是一个应用程序环境的信息,通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息等

8.Service的onCreate回调在UI线程中吗?

Service生命周期的各个回调和其他的应用组件一样,是跑在主线程中,会影响到你的UI操作或者阻塞主线程中的其他事情

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

详细整理在GitHub点击可见;

Android架构视频+BAT面试专题PDF+学习笔记

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

跳槽字节跳动,从新手到Flutter架构师,一篇就够!深度好文相关推荐

  1. 从新手到Flutter架构师,一篇就够!这原因我服了

    咸鱼翻身不断上演 2018年5月份,北京,在所谓的互联网寒冬里,一个普通二本的学生,在小公司工作一年后,跳槽拿到了百度的offer,月薪从9k变为17k,涨薪幅度接近100%. 2018年底,上海,一 ...

  2. 从新手到Flutter架构师,一篇就够!附赠课程+题库

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

  3. 从新手到Flutter架构师,一篇就够!学习路线+知识点梳理

    前言 IT行业薪水高,这是众所周知的,所以很多人大学都选择IT相关专业,即使非该专业的人,毕业了也想去一个培训机构镀镀金,进入这一行业. 但是有关这个行业35岁就退休的说法,也一直盛传. 加上这几年不 ...

  4. 从新手到Flutter架构师,一篇就够!帮你突破瓶颈

    前言 马上快到金三银四都春招阶段了,在这本就是跳槽.找工作的年后黄金时间,大多数求职者都早早做好年后求职的准备,其中不乏有年前早早辞了工作准备年后跳槽的有经验的职场老人们,也有一批即将毕业的应届毕业生 ...

  5. 从新手到Flutter架构师,一篇就够!吐血整理

    在开始回答前,先简单概括性地说说Linux现有的所有进程间IPC方式: 1. **管道:**在创建时分配一个page大小的内存,缓存区大小比较有限: 2. 消息队列:信息复制两次,额外的CPU消耗:不 ...

  6. 从新手到Flutter架构师,一篇就够!深度解析,值得收藏

    前言 今天想停下代码,写点脑袋里不断浮现出来的一些看法. 也就是最近在微博和知乎上老看到"互联网寒冬"的说法.要么是看到啥公司薪水无法如期发放了,要么是看到别人说什么"裁 ...

  7. 关于28岁字节跳动程序员退休,看这一篇就够了

    文章来源:中产之路 作者:岳京杭 前天知乎最热话题要数字节跳动28岁程序员宣布退休了. 顺手写了个回答,获得了127万阅读和12K点赞,混知乎以来最好表现,也是该话题下获赞最多的回答. 几个字节跳动的 ...

  8. 字节跳动面试官:java架构师培训对比

    目录 Kafka的基本介绍 Kafka的设计原理分析 Kafka数据传输的事务特点 Kafka消息存储格式 副本(replication)策略 Kafka消息分组,消息消费原理 Kafak顺序写入与数 ...

  9. 阿里P10赵海平跳槽字节跳动:深度解析跳槽从开始到结束完整流程!

    00. 前言 近期,有消息称,前阿里P10员工赵海平已加入字节跳动,职级为4+.王垠加入华为职级为 21级. 事情起因还是从两人乌龙说起,详细经过请看:王垠受邀面试阿里P9,被P10面跪后网上怒发文, ...

最新文章

  1. 微生物组-宏基因组分析第9期(报名直播课免费参加线下2020.10本年最后一期)
  2. IE中页面不居中,火狐谷歌等正常
  3. f1 score与f2 score的区别
  4. 暑期训练狂刷系列——Foj 1894 志愿者选拔 (单调队列)
  5. 允许服务与桌面交互_vivo 正式推出 Origin OS,融合自然设计与全新交互
  6. 大规模分布式系统资源管理(一)
  7. Php数组面包屑导航,thinkphp实现面包屑导航(当前位置)例子分享
  8. 多方计算时,每次结果都存在着巨大隐患,如何解决
  9. nginx服务+LEMP搭建
  10. 数据分析的数据来源于哪
  11. 在endnote中制作GB/T7714《文后参考文献著录规则》的输出格式 及 编辑Output Styles中特殊符号说明
  12. 方立勋_30天掌握JavaWeb_回顾复习
  13. 移动警务系统建设方案
  14. android反编译工具 win8,Apk Easy Tool(android反编译工具)
  15. 华东师范大学 计算机 博士 毕业论文,【学位】华东师范大学博士、硕士学位论文基本格式要求...
  16. Halcon 阈值算子汇总
  17. SpringMVC优雅的实现数据校验
  18. 计算机专业考研有必要二战吗,2019考研:二战考研有必要吗?
  19. 【Cadence】layer颜色的设置
  20. 浅析伊利集团分销及库存管理信息系统的改造

热门文章

  1. SpringCache的简单入门(RedisCacheManager)(@Cacheable、@CachePut、@CacheEvict)
  2. windows如何查看电脑开关机记录
  3. java开发钉钉企业内部应用,免登授权+消息推送
  4. [Pandas] DataFrame的columns属性
  5. R语言使用cph函数和rcs函数构建限制性立方样条cox回归模型、使用rms包的Predict函数计算指定连续变量在不同分组变量下和风险比HR值的关系、使用ggplot2可视化变量与风险值HR的关系
  6. java简单实现求平方根
  7. 囚犯排队红帽子和蓝帽子问题
  8. 华硕启动vmware 虚拟机,显示Intel VT-x但Intel VT-x处于禁用状态 ,开始vt
  9. 专家:大数据正成为促进经济转型新动能
  10. 怎么给网页加动态背景