转行Android后第一次面试某鹅被坑,那些一毕业就进大厂的程序员,有哪些秘诀?

面试相关技术准备

由于我简历上还有iOS相关的经验,还写了个熟悉c/c++,于是复习内容如下:

  1. 程序员面试笔试宝典
  2. 剑指offer
  3. 找的网上java相关的面试题目
  4. 看java源码: 这里准备有些不足,细节上很多答不上来。

如:ArrayList扩容和缩容,HashMap(jdk 1.8 后这里使用红黑树优化也较难), HashSet等面试前稍微看了下LinkedHashMap源码,其实这里很多面试问题。这里还有一个比较难的源码,红黑树实现的TreeMap,TreeSet

并发容器(这里没怎么准备): CopyOnWriteArrayList、LinkedBlockingQueue、ArrayBlockingQueue、SynchronousQueue。 以上源码很多是需要分版本的。

  1. 并发多线程的一些操作。
  2. Android源码:只准备了几个项目相关的,如okHttp、Volley、EventBus、Butterknife等还有几个图片库。其实还准备了下装逼的 retrofit+ rxjava但底层很多不是很明白,果断在面试中不提。
java 语法知识:主要集中在集合和多线程

先说一个题外话,恩,还算幸运,居然没有涉及到垃圾回收机制和JVM类加载等。以下是一面电话面试内容。

  • ArrayList 扩容
  • ArrayList和LinkedList 区别
  • ArrayList 删除元素是否有缩容策略,当时猜的是有,因为忘记了对应的源代码
  • 如果是你,怎么设计ArrayList 删除时,缩容策略
  • 用过HashMap么? LinkedHashMap 和HashMap区别?(这个答得不好)
  • LinkedHashMap里面有按照顺序存储数据,如果是你怎么设计?(LRUChache的基本上就是采用的这个)
  • volatile关键字含义? 如果每个线程都存有共享数据的副本,是否会浪费空间。(JVM的内存模型实质)
  • 设计一种多线程的数组满足读多写少的情况。会哪些存在的线程并发问题。(CopyOnWriteArrayList)
Android的知识
  • Activity 的lanchMode 和FLAG标签
  • Service中 bindSerice和 startService 区别
  • 事件拦截和传递机制
  • Textiew怎么添加图片
  • TextView加载很多文字的时候,加载较慢,如何优化
  • 强引用,弱引用,软引用的区别等
数据结构
  • 链表的是否相交 当时提供了几种解法,然后自己给自己挖坑了
  • 如何判断交点

面试时都考察哪些

一、简历是否真实

这其实是面试第一要务,面试的过程其实就是看简历是否属实的过程,因为能到面试环节,说明这个人是符合要求的,不满足要求的早就被剔除了,如果他真的如简历描述的那样,100%会招过来,如果人人都如此,那就不需要有面试这种过程了。

需要注意的是这里的真实有三层含义:

  • 如实描述自身经历,很多人只在一些大项目里做一个很小的螺丝钉,但简历里往往夸张这段经历。
  • 不知道自己不知道,常见于简历里各种“精通”开头的描述,因为知识体系与视野的局限,明明只是了解很浅却夸口精通,很多时候他并不认为自己说的有问题,而是真的以为自己已然精通,有点井底之蛙的感觉。
  • 简历里的真实要与你的期望相匹配,一门技术了解到怎样的程度才算精通,很难有定论,所以这里的“真实" 只能是候选人与面试官标准之间的契合,这种有主观运气成分,也许面试官水平不够错误判断了你,也不用感到不爽,面试何尝不是种双向选择呢。
二、技术的深度

技术的深度一向是面时光最看重的部分,当今任何一个技术领域都非常宽广,一个人要同时掌握那么多知识并且都深入几乎不可能,那都需要拼学习效率与工作年限了。而你曾经做过的东西,正在做的东西,是绝对可以了解得更深入的,一个对技术有好奇心,有技术热情的人,都不会仅仅停留在这个东西挺好用,而是会忍不住去探究它背后的技术原理,即便不是亲自去看源码,也会花点时间了解别人整理过的经验,所以单凭考察技术上的深度,就可以考察-个人是否对技术有热情 ,是否有技术好奇心等等这些很多大牛认为的所谓“优秀程序员的特征”。

之前曾看到过一句话:“一个人对他所做的事情了解得越深,他就能做的越好”。放在这里再合适不过了。

三、技术的广度

深度是有了,还需要广度吗?我个人的理解是:深度是必要条件,广度是加分项。同样的有技术好奇心的优秀程序员,也不会满足于仅仅局限于自己的一亩三分地,工作之余,也会想要尝试一些其它的领域和方向,因为投入问题也许不够深入,但很多领域知识你知道与不知道,对你个人知识体系的形成关系很大。

比如你要实现一个功能, 在你当前熟悉的技术领域上很困难或者效果不佳,在你就要放弃时你的同事告诉你,这用一个简单Sqi语句就可以实现啦,为什么要搞得那么麻烦?这个例子虽然举得很蹩脚,但是我想意思大家应该已经明白了。知识越有厂度,头脑里的技术体系就越备,同样的问题,你就可以想到N个解,思考一下就得出最优解了 。

如果你听都没听过一些东西,就会经常说出“这个好难搞啊”、"这根本就不可能”其实有的时候真是知识的局限问题,所谓的从0到1难,也是这个意思。

四、逻辑思维能力

这也是一些面试官比较看重的一点,这里并不是指那些臭名昭彰的脑经急转弯问题,而是通过交流观察,判断一个人表达观点逻辑是否清晰,回答问题是否有章法,这个很难描述,但如果你细心观察,你会发现很容易通过一些简单的交流,就可以看出一一个人是否逻辑清晰。

有时候你会觉得某个人表达沟通很不错,其实不是沟通的问题,是他说出去的话,经过了他大脑的条理清晰的整理,让你很容易就能明白。这种习惯不是一朝一夕就能养成的,所以面试过程中这点装不出来。

另外一个人如果逻辑清晰,而且反应又敏捷,语速很快,那是大大的加分项,恭喜你,距离offer不远了。

面试前系统复习的重要性

我也已经做了好几年开发了,还记得刚出来工作的时候觉得自己很牛逼,现在回想起来也蛮好笑的。懂的越多的时候你才会发现懂的越少。因为如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大。

工作将近8年,似乎一直都在救火式的学习。遇到问题,才着急忙慌的上网查,边学边用,这种方式诚然是100%学以致用的,但是这种头痛医头脚痛医脚的方式并不会对自己日后解决新问题有多少助益。

面试新工作时我们难道可以以此作为核心竞争力吗?

福尔摩斯的神探能力也许是通过破解一件件错综复杂的案件获得的,但是促使她破案的绝不仅仅是对犯罪现场的敏锐观察,他的推理很大程度上取决于他对某些领域的系统知识的掌握以及独到见解。处理问题的能力很重要,但是这个能力需要有专业及系统化的理论知识作为支撑。

不管是往深了学,还是横向扩展知识的广度,重要的是得找到那个圆心,然后以或大或小的半径去打磨围绕这个圆心的各种技能。这样,找工作时才能底气十足,才能有望在某一个领域成为专家。

面试需要具备哪些技能?

  1. Java基本功,这个是必备知识。如果说面试到时很少用,并不代表后面项目不会用到。而且,如果基本知识都掌握不好,说明还有很多提高的空间。
  2. Android基本知识也是要的。如果连android基本知识都理解不深刻,那我估计想开发出一款好的软件也没那么容易。
  3. 面试的问题不常用或是比较难的,其实,说明面试官想对你做深层次地考核,答得上来是加分项。
  4. 面试官也很忙的,面试题大多也是网上找到。
  5. 有时候,需要的并不是标准的答案,而是看你的学习能力、知识广度、分析问题的思路、解决问题的技巧等等,这个才是面试官关心的。
面试复习路线参考
  • Android学习路线图

首先,对于没有学习方向,知识不体系的人,我把我工作几年整理的学习路线分享给大家,做一个借鉴作用,还不知道怎么学习的人可以直接照着我这个学习路线一个个的去学习,知识不体系的人可以参考下我整理路线的方式,总之希望能够帮到你们!

  • 模块化学习资源

文末

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值