• 构造单例的时候尽量别用Activity的引用;

  • 静态引用时注意应用对象的置空或者少用静态引用;

  • 使用静态内部类+软引用代替非静态内部类;

  • 及时取消广播或者观察者注册;耗时任务、属性动画在Activity销毁时记得cancel;

  • 文件流、Cursor等资源及时关闭;

  • Activity销毁时WebView的移除和销毁。

5. View

  • Window WindowManager WMS

  • View 工作流程

  • View.post

6. 动画

**帧动画 :**AnimationDrawable 实现,在资源文件中存放多张图片,占用内存多,容易OOM。

**补间动画 :**作用对象只限于 View 视觉改变,并没有改变View 的 xy 坐标,支持 平移、缩放、旋转、透明度,但是移动后,响应时间的位置还在 原处,补间动画在执行的时候,直接导致了 View 执行 onDraw() 方法。补间动画的核心本质就是在一定的持续时间内,不断改变 Matrix 变换,并且不断刷新的过程。

**属性动画 :**ObjectAnimator、ValuetAnimator、AnimatorSet 可以是任何View,动画选择也比较多,其中包含 差速器,可以控制动画速度,节奏。类型估值器 可以根据当前属性改变的百分比计算改变后的属性值 。因为ViewGroup 在 getTransformedMotionEvent方法中通过子 View 的 hasIdentityMatrix() 来判断子 View 是否经过位移之类的属性动画。调用子 View 的 getInverseMatrix() 做「反平移」操作,然后判断处理后的触摸点是否在子 View 的边界范围内。

提升动画 可以打开 硬件加速,使GPU 承担一部分CPU的工作。

7. Android 进程通讯方式

  • bundle

  • ContentProvider

  • 文件

  • Broadcast

  • AIDL

  • Messager

  • Socket

8. Android 线程通信

  • Handler线程间通信

  • Handler 同步屏障机制

  • Looper.loop 为什么不会卡死

  • Messaage复用

9. Android 和WebView 通信

  • js调用android

  • android 调用js

10. app优化 (项目中处理的一些难点)

  • 启动优化

  • 布局UI优化

  • 打包优化

11. 第三方库 源码总结

  • LeakCanary 原理

  • OkHttp

  • 同步请求流程

  • 异步请求流程

  • 责任链模式 和 拦截器

  • OkHttp 流程

  • ButterKnife

  • butterknife 实现流程

面试技巧


最近面试了很多人,但是基本上都没招到什么满意的人,是Android开发都凉了吗,其实并不是,从简历的数量上来看,金三银四的简历还是很多的,首先我们从简历上来说,面试官都希望看见什么样的简历呢?

大部分的简历,都是罗列自己的公司经历、项目经历,介绍了项目大概的情况,好一点的,罗列下项目的技术方案。

要知道,对于面试官来说,简历是很重要的一环,这是对你的第一印象评价,很大程度上决定了你的面试成败。我在面试的时候,简历发给我之后,通常会看一眼面试者的项目经历,从而决定了我的面试问题。所以,项目经历上只需要写下面几个方面:

  • 项目一句话简介,说明项目的大体情况和规模
  • 核心技术方案,介绍用到的核心技术、核心技术方案
  • 你在项目中承担的角色以及贡献等

实际上有了这些东西,我基本上可以了解你的这个项目大概是个什么规模,需要用到哪些技术点,以及你应该有的能力范围,下面我就会根据你的这些项目经历来对你提问,由浅入深,可能先问你大概的技术方案,是否有更佳方案或者现在的方案是否有什么问题等,再深入问问技术的细节,看你的技术深度和广度。

除了项目经历,你的简历上只应该出现你的亮点,切记各种废话,什么精通Java,精通设计模式、数据结构,这些根本不能体现你的特点,这些东西应该结合业务或者架构,例如利用设计模式改进了技术方案的流程,通过数据结构优化了程序的执行效率。

另外补充一点,好的开源项目、博客等等,这些都是比较好的加分项目,但是…如果你的开源项目连readme都没,你的博客全是流水账,那就不要贴了,反而容易减分。

面试实际上是一个双向的过程,所以,一场好的面试,绝不是面试官单方面的发问,面试者应该引导面试官,把面试当作是一场技术讨论,一来一回,双方都能了解对方的技术实力,我相信,这样双方都会对这次面试满意,通过面试也就是自然而然的了。

大公司和小公司该选哪个?

说完公司的面试,再说一下经常有读者私信我的一个问题,那就是A公司、B公司,我到底该选哪个公司,首先我要确认下你是不是来炫耀的。

对于这个问题,其实也是有一个个人看法的,这个看法是我的主观臆断,可能很多人也不会这样想,这里写出来,大家轻喷。

首先,如果你是刚毕业的学生,我会建议你去小公司、创业公司,但是,是技术型偏向的公司,绝不是外包或者某个公司的IT部,为啥呢,原因很简单,刚毕业这几年,是你飞速成长的几年,也是你选择方向的几年,在这些技术型小公司、小团队里,你可以非常快速的上手各种技术,没有任何外部压力,团队小,大家通讯基本靠吼,不需要走流程、发邮件、约评审,这是大公司的通病——决策链太长,同时,你对自己的技术定位,在一段时间后,也会更加清晰。

在这之后,除非有一夜暴富的机会,就不应该在继续在小公司待下去了,这时候,一定要去大公司进行历练。大公司去干什么呢?其实很多大公司的技术并不很先进,代码很可能也很烂,但是你去大公司,就好像游击队变成了正规军,你要学的是规范和流程,小公司的这几年,让你的技术突飞猛进,但是却不成章法,大公司就是让你来沉淀技术的(这句话要屏蔽老板),大公司经营多年,技术方案早已成型,很多开发者进去也是拧螺丝,但是,你需要的是了解各个系统、各个平台的流程、优劣,做到心中有术,而不是心中有码,如果你是一个可造之材,那么经过这样两轮历练,我相信你应该是一个很不错的开发者了。

学习

首先,学习这件事情,就是一个认知的过程,既然是一个认知的过程,那就不能以管窥豹,而需要站在一个全局的思想上来看,例如在学习Flutter的时候,没有必要精通所有的Widget,掌握常见的Widget之后,就应该去思考Flutter的绘制流程、刷新流程,了解这些,才能让你在全局角度上掌握Flutter的渲染过程,这比你掌握几个Widget更加有用。

更加通用的,我们平时应该尽可能的拓宽自己的知识广度,这样才能让你的眼界更加宽广。就拿Flutter来说,总有一些敏感词喷Flutter,Flutter能不能火我不知道,能不能推广我也不知道,但是我依然学了Flutter,这是为啥?因为通过Flutter我学习到了一种新的跨平台思想,一种区别于现有的命令式编程的编程范式,一种全新的改进渲染流程的方法,掌握这些,我觉得比单纯的讨论阿里是不是不再用Flutter了更加有用。

学习,永远是一个认知碾压的过程,不断接触新思想、新技术,才能让自己有更加敏锐的认知洞察力,就好像学了Flutter,你会发现Compose好像也是一样啊,SwiftUI好像也是啊,从更高的眼界上去看这些东西,其实本质上,都是一种思想,现在的社会早已不存在信息孤岛,学会将信息链接起来,才是高效的认知方法。

井底之蛙永远跳不出去井,也永远别用阿里是不是还用Flutter这样的事来限制你的认知,就好像三体人用质子封锁了地球的科技进步,可悲。

努力成为一个优秀的程序员

在大公司一定要吾日三省吾身,千万不能贪图安逸,一个技术用十年,你也只有一年工作经验。

写代码

永远不要上手就写代码。

这句话我们从小就听——不要上手就写作文,先想好提纲。编程也是如此,除非胸有成竹,否则绝不一码十行。

当我们拿到一个需求进行开发的时候,一定要先在大脑中推敲推敲,这个需求的每个方面是否都是完备的,是否有异常流程,这个需求的每个技术点,是否能够胜任这个需求,这个需求的流程,我是否完全都清楚了,这些东西都想不好,那就不是在编程,而是在「拉屎」,而且你拉的这些shit,很可能会把后面的开发者「淹没」,造成一场信任危机。

所以,写一个好代码的时间一定比烂代码花的时间更少。

不过,面对日益压榨严重的资本家们,可能经常不太会给够一个好代码的开发时间,这个时候,就需要对代码进行取舍了,或是找轮子,或是改轮子,总之,要把精力花在刀刃上,一个最佳的原则——make it work, make it right, make it fast,我认为,这是一个代码最佳的生命周期。

系统面试复习路线参考

成年人想要改变生活、逆转状态时,会不约而同做一件事,那就是再次学习。

接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用

**帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。**无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。

总结:

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

十年磨一剑:站在面试官角度聊聊现下大环境面试,想跳槽涨薪的必看相关推荐

  1. 想跳槽涨薪的必看!Java开发了解这些自然无惧面试,附面试题

    前言 这几年在Java工程师招聘时,会看到很多人的简历都写着使用了Spring Cloud做微服务实现,使用Docker做自动化部署,并且也会把这些做为自己的亮点.而比较有趣的这其中以小公司出来的人为 ...

  2. 想跳槽涨薪的必看!2021年百度Java面试真题,跳槽大厂必看!

    前言 MyBatis是一个支持普通SQL查询.存储过程和高级映射的优秀持久层框架.MyBatis 去掉了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML ...

  3. 面试官100%会问的软件测试面试题!!(必看)

    目录 一.问题预测 让简单介绍下自己(每次面试开场) 让说下自己会的内容 看了哪些书籍(有问到) 了解过哪些技术博客/论坛(有问到) 是否了解软件测试需要掌握哪些知识(问到类似问题) 之前面试过,觉得 ...

  4. hrbp 牵着鼻子走_别被面试官的问题牵着鼻子走(职场人必看)

    面试前,相信每个应聘者都会尽力做好面试的准备,然而,在面试时按部就班地回答面试官每个问题总是很被动,似乎无形中常常被面试官环环相扣的问题牵着鼻子走.那么,怎样回答才能化被动为主动,给面试官留下好的印象 ...

  5. 近期想跳槽的程序员必看!阿里P7级别面试经验总结,使用指南

    开头 技术的发展产生了程序员这个职位,从这些年各大互联网公司曝光的一些员工收入水平来看,程序员的工资还是相对比较高的,可是我们在互联网上还听到了另外一种声音,很多程序员想转行,特别是大龄程序员,这可能 ...

  6. 征服Java面试官!Java程序员月薪20k的涨薪秘籍,先收藏了

    开头 Spring框架自诞生以来一直备受开发者青睐,有人亲切的称之为:Spring 全家桶.Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新,很多研发人员把spring看作 ...

  7. 近期想跳槽的程序员必看!2021最新京东Java面试题目

    前言 JVM对实际简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以及弄清楚JVM的工作原理,其实我个人认为这块 ...

  8. 7000字从面试官角度拆解面试20人的体会

    从面试官角度聊聊面试20人的体会 01 初筛简历 一.如果简历通过,在面试前,雁卿一般会做的 3 件事件 一)了解候选人的主要经历,掌握的技能 二) 提前列出面试问题 三)评估英文简历 二.为什么雁卿 ...

  9. 十年磨一剑:心中无敌 无敌于天下

    80后CEO:创业者罗威 刚刚结束不久的2008北京奥运会冠军乃至运动员的重要特征是80后大踏步地主宰了局势.然而,欧美国家的80后与前辈明星的行为方式差别还不大,但是在中国却大不一样.原因在于中国的 ...

最新文章

  1. android设置title字体大小,android setTitle怎么实现字体的大小
  2. Vue——使用element-resize-detector监听DOM时ID重复时移除监听器时错误解决方案
  3. 视觉编码(Visual Encoding)
  4. P3978 [TJOI2015]概率论
  5. cc2530学习笔记
  6. 详谈P(查准率),R(查全率),F1值
  7. python压缩文件夹为zip_python打包压缩文件夹zip+组装文件夹
  8. [转载]设计模式解密(23) - 总结篇
  9. iOS 文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等)...
  10. Python机器学习:评价分类结果008多分类问题中的混淆矩阵
  11. Android Multimedia框架总结(二十三)MediaCodec补充及MediaMuxer引入(附案例)
  12. 这可能才是PSV破解不了的真正原因—破解的无奈
  13. 2022年最值得学习的5款开源Java框架
  14. lg g2刷android8.0,lg g2线刷刷机教程(可救砖)
  15. 项目验收的步骤和程序
  16. 鹰式价差matlab,鹰式套利:关于蝶式套利的模型 求一个比较详细的解释,为什么…...
  17. 实现省市县的两种方式
  18. windows编程13-WM_CTLCOLORSTATIC
  19. JavaScript事件驱动模型
  20. Android 开发 -- 开发第一个安卓程序、Android UI开发(布局的创建:相对布局和线性布局、控件单位:px pt dp sp、常用控件 、常见对话框、ListView)

热门文章

  1. C语言学习(指针)+PID系统
  2. Python数据分析15——数据透视表
  3. 基于瑞萨RH850的BootLoader调试问题记录
  4. Zilliz 荣获「2021 年优秀开源创新企业」称号
  5. 机器人无限火力无限e符文_LOL无限火力青龙刀机器人黑科技套路 无限晕加超高伤害...
  6. 安装numpy, pandas, scipy 和matplotlib
  7. matlab 采用描点法进行数据模拟和仿真
  8. Aisino SK-820 打印税收票据
  9. 学习笔记 java 集合(三)
  10. Python之美[从菜鸟到高手]--urllib源码分析