android 面试 - 做好准备吧各位

android 面试 - 做好准备吧各位_第1张图片

各位努力吧,面试准备神马的,虽然临阵磨枪不快也光,但是还是推荐大家不要临时去摸去,而是在平时多加积累,学的明白,学的深才能讲的清,面试才能带节奏,才能有话说


我已经很努力了,为什么还是学不会,还是焦虑

焦虑是业界常态,不光程序员,现在很多行业从业人员都焦虑,究其原因就一个事:中国人太多,现在是建国后中国资本家最幸福的时代,人有的事,随便用,随便骂,随便打,不爽了换人,敢提涨价就滚蛋

学习是非常讲究技巧的,android 端也是同样如此。项目完事、维护时,工作不忙,有时间我想学习提高自己,但是我不知道学什么?从何学起?东一榔头西一棒子,最终收获甚少,然后开始自我怀疑,厌倦学习,从此堕落。或者我非常努力的学习,掘金啊,啊看大量的文章,但是到头来回忆时我总是想不起什么来,这些时间和努力都白白浪费掉了,这就是我们嘴上常说的效率问题

学习想要卓有成效:

  • 明确预期值 - 必须清楚自己的水平,先回忆我哪里会哪里不会,写下来,形成一个预期任务表,这个表非常有用,看着这个表,上面这一堆堆的点,你还怎么还意思玩呢...另外看着这一个点一个点的下去,自豪感,满足感油然而生,是最有效的对抗焦虑的手段,真的能给自己无限动力。有位大神说过:对抗焦虑最有效的手段就是用满足感填满自己
  • 连贯学习 - 学习切记盲目,杂乱无章,比如我对多线程掌握不好,那么在最近一段时间只学习多线程的点,学习一个点,写一个点的 demo,写完思索下然后形成博客文章
  • 落于纸面 - 不要高估自己的记忆力,时间长点什么都会忘记的,学习完一个点之后一定要写 demo,在写文章。写 demo 是检验自己是否真的学明白了,写博客是梳理自己的学习成果,形成有效记忆,另外查漏补缺看看是否有漏下的
  • 落于项目 - 上面的都做到了,也只是说明我们学会了这个点,但是并不意味着我们可以很好的使用他了,这还需要我们对这个点有更深入的基于现实需求的思考,可以把它利用到现有的项目中,或者写一个工具库,开源库之类的,这样时间久了,多用几次才能做到如臂指使的成都,才能真正变成自己的东西,而不是需要的时候去回忆,查找资料

java 复习大纲

虽然 Kotlin 这个小婊砸成功上位,但是 java 依然还是我们必须熟练掌握的内容,并不是说有了 Kotlin 我们可以不看 java 了,java 基础在面试中依然占有相当大的比重,其实抛开面试不说,Kotlin 只是改变了具体代码,但是核心类库,变成思想依然还是 java 的,java 并不仅仅是具体代码,对于以 android 入门的 coder 来说,java 代表变成思想

1 . 面向对象的三大特性:

封装、继承、多态,这是 OOP 面向对象编程的核心思想

2 . 程序设计的6大原则:
  • 单一职责原则
  • 里氏替换原则
  • 依赖倒置原则
  • 接口隔离原则
  • 迪米特法则
  • 开闭原则

代码封装永远离不了这几个原则,业务面试没人会直接问你,但是在封装功能代码时异常重要,在我们设计类、方法、接口的时候,请遵循这些原则

3 . 设计模式
  • 单例模式
  • 构造器模式
  • 模板方法模式
  • 装饰器模式
  • 观察者模式
  • 责任链模式
  • 策略模式

我把设计模式叫做代码套路,不同的套路有自己应用范围,当大家都严格按照相同的套路来编写代码时,那么阅读别人的代码就是一件很顺利,简单,清晰明了的事了,当然最重要的是能凸现出自身水平来

4 . Java 字符串相关

String、StringBuilder、StringBuffer 这几个你是要门清的,从事过后台开发的面试官喜欢文这个

5. java 数据结构

集合类型你是不会也得会,不会至少也得看看的,有的面试官就是喜欢问这个,不问你别人


  • List
    • LinkedList
    • ArrayList
    • Vector
  • Set
    • HashSet
    • TreeSet
  • Map
    • HashMap
    • TreeMap
    • HashTable

每个容器的自身特性,优缺点,实现原理,多线程是否安全,变形等待的,然后自然的就会联想到算法了,这个大家也得看看,至少也得稍微准备,排序是必看的

6. jvm 内存模型,垃圾回收机制,GC 算法

总结过了,看文章:

  • android 多线程 — java 内存模型
  • android 多线程 — GC
7. 多线程

多线程是必问的了,文的多深看面试官水平和招人的需求,最简单的也会问你 handle,asyncTask,难一些的会让你说说线程池 ThreadExecutor,锁的类型,优化,volatile,synchronized 的区别,reentrantLock 自己加锁等问题,再难的就是你怎么设计使用哪种锁,锁的优化,讲讲 ACS,AQS 等

这部分我有总结一下,请看:我的多线程专栏,但是还有很多我没记录的,大家请看:android 多线程 — 学习目录,这里面有其他优秀的博文供大家选择


android 复习大纲

就下面一张图就够了


你可能感兴趣的:(android 面试 - 做好准备吧各位)