记7月份Android面试感想

508 阅读9分钟

作者:菜虫 时间: 2018.08.06

记录下近半个月面试的感想,

  • “面试造飞机,入职拧螺丝”

    大部分的公司在考虑的候选人的时候,往往都是往大了的地方去考虑,综合各种因素,但是对于一个求职者来说,很多时候是不能完全满足的,毕竟大部分的都是跟着公司或者产品的方向走的。所以需要更多的基础知识跟个人态度,

  • 谦卑的态度

    作为一个技术人,个人觉得这是一个最基本的素养,勇于跳出舒适圈,对新奇的事物保持好奇的态度,对平常的事物保持虚心的态度,去求知,去学习;不要太过于计较眼前的利 益

面试前

以前我在找工作的时候,从来不考虑这些问题,但是,随着工作年限的增加,到达一定的年限后,如果不是自己已经在工作中积累了相当多的知识和经验,全靠工作中那点知识是完全不够的。在找工作的时候就会出现工作年限跟经验不匹配的情况,这个时候更多的就需要突击学习,老祖宗留了一句话“临阵磨枪不快也光”,这点对我个人来说的话,是非常受用的,毕竟工作跟找工作不是一码事,而且很多时候,当时玩的很6的东西,过段时间差不多都忘了,也就基本上记得踩过的坑,和一些大体上东西,细节的一些就记不太清了,这基本是我现在在工作中遇到的情况。

在需要换工作的时候一定要给自己预留一个准备的时期,我个人的话建议,一个月左右,不要太久,也不要太短,也可能很多会说,我三天前看的东西,让我一个月之后采用,鬼才记得哦;我这里有一个比较好的方法:做笔记,做粗不要细,根据自己的理解能力去做,做一个自己能看懂的,网上那些东西可以看,但一定要自己去理解记录,还有,不到迫不得已千万别去背面试题,一定要理解,去实践!耐克不是有一句很有名的广告语“just do it”,直白点就是去干,别跟老子说别的,一句话,就是干,老子拿起键盘就是一把梭!

简历

个人觉得简历的纸张在2页半最好,不要附加任何无关工作的东西,性别、年龄、籍贯、住址什么杂七杂八的不需要再这上面体现出来,毕竟也会让你填个面试表,里面都会有这些内容的,真正有用的也就是电话跟邮箱,一个是可以约你面试用的,一个是给你发面试邀请跟offer用的,足矣。

工作经历这块,个人觉得满足4点就可以了,起止时间、公司名、职位title、工作内容,对于工作内容这一块,我有几点想说的

  1. 剪短精悍,学会总结提纯,尽量能直观表现出来工作内容跟业绩,能用数字说话的就别BB
  2. 突出自己,尽量突出自己在团队中的价值,毕竟你也不是什么好酒,不会自夸的王婆怎么卖出去自己,但是一定不要装逼,装过了就不好收场了,还有,中国的文字博大精深,同样一句话用不同的词汇表达出来意思就完全不一样了,所以,你懂的

个人技能这块的除非你真的是精通,不然老老实实写熟悉或者深入了解过,反正我是不敢写的,大概写个7~10条,主要突出以下几个方面,工作经验,专业技术,第三方主流库的理解

对于项目经验,主要写3个左右就可以,能突出一定的代表性,内容的话可以介绍下这个产品是什么东西,如果是日活在W级别或者下载量在百万级别再或者是进过主流商店排行榜的的可以描述一下,突出描写下在这个项目里的职责,用的什么技术,做的什么功能,用到了什么理念,尽量的按条来表述,如果太多了,可以调重要的写,能一笔带过的就别复述

毕业院校,如果你是211/985的一定写到最前面,写在工作经历前面,如果是跟我一样的,非知名主流大专生,写到最后吧,毕竟很多时候看的还是你的能力

面试

我也面试过人,很多人其实就是能力特别强但是在嘴上表达的时候稍微欠佳,get不到重点,这种时候其实就可以把面试官当成普通同事,面试也就只是一场技术交流的过程,不要局限在一个问题上,毕竟面试也不会因为一个问题直接pass掉你。

说话的技巧方面,特别忌讳的就是直接来一句,不会,不了解,不清楚,这个否认三连下来,谁还会提的起兴趣在继续聊下去,要学会委婉的说,举个例子,因为我最近的公司是做直播的,重点来了,这些都是第三方sdk做的,我怎么知道,我的回答就是,公司这块用的是第三方的,具体细节的东西,我们是看不到的,但是这块我大概了解了下,巴拉巴拉。。既表达了我不会,又表现出来我对这块又是有了解的。逼装的又优雅又不会被打脸。能用一句话表达出来几句话的意思,也能用几句话表达出来一句话的意思

每次面试完一定要总结!总结出来自己的薄弱点,针对薄弱点突击加强!

面试题

其实这个东西我是不想写的,但是架不住总有问的,我就这次找工作的时候遇到的面试题大概写一下,有些记不住,答案我就不写了,自行google吧

  • OOP

    1. 面向对象的6大原则
    2. 从面向对象的角度讲一下抽象类跟接口
    3. 怎么设计对象,举例说明
  • 设计模式

    1. 你用过什么设计模式,应用场景
    2. 同一场景下你为什么选择了这个设计模式,跟其他的设计模式对比,你觉得你用的这个好在哪里
    3. 单例的优缺点

    注:设计模式这个东西一定要在工作中尝试去用,多注意总结,很多时候只要会其中一个,其他的基本没啥问题

  • Java

    1. 类的加载机制
    2. gc机制及算法
    3. ArrayList和linklist区别
    4. map、set、list的区别
    5. 线程的5种状态、线程安全、同步问题(synchronized)、sleep与wait
    6. hashmap的原理及hash碰撞
    7. 线程池,构造方法的那几个参数多注意下,至于里面深点的东西我没有被问到
    8. ThreadLocal,一定要去看下源码具体实现,这个跟handler是有关联的,我就被问死过
    9. String StringBuffer StringBuilder
  • 数据结构及算法

    1. 排序,注意,一定要针对不同的场景给出不同的排序,不要一上来就是一个快排,要讲出原因
    2. 自定义链表及反转
    3. 二分法查找
    4. 队列,原理及应用场景
  • 数据库

    1. 数据库三范式
    2. 索引原理
    3. 事务原理
    4. 数据库升级(数据量大的时候怎么处理?用考虑过用脚本做数据库升级么?)
  • Android

    1. App启动流程
    2. View渲染机制(不是自定义View那个)
    3. Activity、fragment的生命周期
    4. 事件分发机制,一般讲了之后都会出一个情景题,根据实际情况再去做讲解
    5. 自定义View
    6. Handler,建议看源码,自己梳理,特别留意Threadlocal这个东西,一定要多看下,会结合场景问,也会单独问里面具体的一些实现
    7. Parcelable和Serializable的区别
    8. 内存泄漏和OOM,这个说的时候一定要先讲下原理,然后再具体结合Android说
    9. Actiivity的4种启动模式
    10. 广播,动态和静态注册、本地和全局,从这2个维度去讲
    11. service 启动方式,生命周期,service工作线程
    12. Activity view Window的区别及加载流程
    13. ANR定位
    14. AIDL及binder机制
    15. 热修复原理
    16. LRU原理
    17. Activity的状态保存(onSaveInstanceState)及触发时机
  • 网络

    1. Http请求流程
    2. http和https的区别,
    3. https的单双向认证
  • 优化或高性能编程(重头戏)

个人总结了以下几个方面,可以根据这几个方面自行总结:

  1. UI渲染方面
  2. 内存方面
  3. 电池
  4. 网络
  • 架构

也被问到过好多次,这个东西说虚也虚,主要就是自己在做项目的是多留心观察,多看看关于这方面的东西,有兴趣的话可以看看人家做后台服务器一些东西,自己去总结提炼并付诸实施,而且不同的项目用的也不一样,全靠经验

结束语

差不多以上就是我这次找工作的一些感想和附带的一些面试题,至于答案什么的自己根据实际的情况总结,多在工作中终结知识点,多记笔记。实在是啥也没做的,可以突击复习,切记一定要以理解为第一前提的情况下,去做笔记,去记忆!背面试题是下下策

说下为什么我总是说记笔记这个东西吧,我个人是比较健忘的,一般也就记个1周,很多细节的东西都会忘,但是一看到笔记,很多东西基本上都能想起来,而且每看一次,就会记忆强化一次,忘的速度也就会慢一些。

希望大家能拿到自己心仪的offer