【面经】一年的Android开发经验跳槽时,面试官都会问些什么问题?

2020-12-23 11:35:42 浏览数 (1)

前言

有一个朋友刚进入这个行业半年,想到以后肯定会跳槽,所以来问我现在去面试的话,对于一年开发经验的程序员面试官都会问些什么问题,他之后也好准备准备。

因为这个问题问得太泛,不同的公司对1年左右经验的开发人员要求不一样,所以我这里就以我现在公司的标准或者说我个人的标准来回答。

希望对有同样疑问的朋友能有点帮助。

一年Android开发经验需要具备什么

简单来说,最重要的是有成长潜力

一般三年以上经验的员工,我更看重他之前的工作经验能否能让他快速独立负责某一块工作,是否能将他之前的经验转化团队的战斗力,不同公司业务与经历差别很多,这样的人可能带来不一样的技术经验与视角,这也是为什么常说外来的和尚会念经,其实是一个经验互补、避免既有团队老化陈腐的一个方法。

三年以内经验的员工,更多的是看他的成长潜力,而成长潜力最主要的是基本功。只有基本功扎实的员工,才能快速学习掌握新技能,在之后的业务变化中,就能快速适应,满足团队要求。

Android发展起来只有短短几年,我毕业那会都是Windows开发的天下,包括手机也都是WinCE, Windows Mobile系列,哪能想到如今这般景象。现在做Android/iOS是挺好,没准哪天就都是Web开发的天下了,我始终认为“一次开发、到处运行” 既然是所有IT人努力与向往的场景,那么这一天迟早是要到来的。正如现在的开发语言越来越简洁越来越注重开发效率一样,趋势是不可阻挡的。

那么我个人的建议是:仔细想想自己学校里学的东西是否都学扎实了?(如果你是计算机相关专业的话)如果没有,优先要做的就是再把那些东西好好温习下。

面试流程及面试问题

一般写完简历就可以投递了,可以找朋友内推或拉钩网、Boss直聘直接投递,这样比较快一些。

一般的面试安排都是3轮技术面和1轮HR面,部分公司可能会有增减。

技术面试一般会先做个自我介绍,然后问问你做的项目,考察一下基础,之后再写个算法,最后可能问问你有什么想问的么。

自我介绍

自我介绍一般主要说一下你在哪就职,目前的工作情况,工作经验有多久,都做过哪些东西,尤其要突出一下你的亮点。这个大家提前准备一下就好。

项目经历

自我介绍完之后,面试官就会看你的工作经历,挑一些问你,或者直接让你介绍做过的最好的东西。

大家写到工作经历的东西,负责的部分一定要特别熟,经得起面试官的拷问,如果只是参与的,也要尽量弄熟,否则就不要往上写。

每个人的经历不同,做过的东西都不一样,所以我就不给大家整理了。

基础

问完项目,就该考察考察候选人的基础了,一般包括Android基础、Java基础、Android常用的开源框架、设计模式和网络基础等等。下面我来列举一下常见的考察点:

Java相关

Java基础

  • HashMap1.7和1.8的实现原理
  • final关键字,为什么匿名内部类使用局部引用要用final

Java多线程

  • 线程池的使用和原理
  • 锁机制:synchronizedLock
  • volatile关键字
  • ThreadLocal原理

JVM

  • Java内存结构
  • Java垃圾回收机制
  • Java类加载过程
Android相关

Android基础

  • Handler通信机制
  • 跨进程通信方式
  • Activity启动模式
  • 内存优化、布局优化
  • View的绘制流程
  • Android事件分发机制
  • 动画的分类及其原理
  • MVC、MVP和MVVM模式
  • SparseArray原理

Android开源框架

  • Android网络库:VolleyOkHttpRetrofit的使用、原理和对比
  • Android图片库:GlidePicasso的使用、原理和对比
  • EventBus的使用和原理
  • RxJava的使用和原理
  • Router的使用和原理
网络基础
  • HTTP相关:包括HTTP2.0、HTTPS等
  • TCP相关:三次握手、四次挥手等
设计模式
  • 单例模式
  • 代理模式:静态代理和动态代理
  • 观察者模式

这些基础知识一方面大家可以直接阅读源码,一方面可以去网上搜索相关文章去学习,我这里也做了一些关于源码的整理。(文末可以查看领取)

毕竟只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

另外,腾讯面试真的很喜欢问原理,而且问得比较细,所以还是需要加强对原理的研究。

算法

问完基础就可以写算法了,通过我的面试经历来看,算法的难度不是很大,基本刷过《剑指Offer》就足以应对面试了。

大家刷《剑指Offer》的时候,每道题一定要自己先做一遍,这些题基本牛客网上都有,大家可以直接在那上面敲代码。做完之后看看书上的解题思路,如果发现自己的方法不是很好,可以按照书上的思路自己实现一遍,再和书上的代码对比一下,这样印象才深刻。

记住,我们刷《剑指Offer》并不是去记每道题,而是记每种解题的思路,自己有个总结,这样以后在遇到没见过的题目时,才会应对自如。

我在准备的过程中已经把《剑指Offer》所有的题目都用Java实现了一遍,可以参考剑指Offer Java版官方题解汇总。

其它

除了上面以外,面试官也可能会问问跳槽原因,我一般还是以个人技术成长的角度回答的,具体我就不详述了。

最后,面试官还可能会问问你有什么要问的,一般我们要问问技术、项目相关的东西,比如你们使用的技术栈是怎样的、团队的规模怎么样、我来了之后会做些什么工作等等。

关于HR面

如果你能进到HR面,那么恭喜你拿offer就很有希望了。

一般HR会问你生活的方方面面,大家如实回答就好。当HR问我们对薪资的诉求时,我一般还是以现公司总包的基础上涨30%要求薪资,这样起码也会给你到20%-30%。当然有些公司比较例外,比如快手可能给的会高一些。

最后HR会再问问你有什么要问的,这时候可以问问公司的薪资待遇等情况,比如有多少年终奖、评级制度怎样的、多久晋升和普调一次、普调的幅度多少、有哪些福利待遇、有多少年假等等。

另外,一定要问问后续还有什么流程,是否要做背调、什么时候做背调。之前在脉脉上看到说有的公司早早做了背调,导致候选人还没提离职,同事就全知道了。也是好可怕。所以大家一定要求HR在你提完离职之后再做背调。

面试复习系统路线

多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!

这里给大家提供一个方向,进行体系化的学习:

1、看视频进行系统学习

前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

2、进行系统梳理知识,提升储备

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

系统学习方向:

  • 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
  • Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
  • 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
  • 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
  • NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
  • 微信小程序:小程序介绍 UI开发 API操作 微信对接
  • Hybrid 开发与Flutter:Html5项目实战 Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

3、读源码,看实战笔记,学习大神思路

“编程语言是程序员的表达的方式,而架构是程序员对世界的认知”。所以,程序员要想快速认知并学习架构,读源码是必不可少的。阅读源码,是解决问题 理解事物,更重要的:看到源码背后的想法;程序员说:读万行源码,行万种实践。

主要内含微信 MMKV 源码、AsyncTask 源码、Volley 源码、Retrofit源码、OkHttp 源码等等。

4、面试前夕,刷题冲刺

面试的前一周时间内,就可以开始刷题冲刺了。请记住,刷题的时候,技术的优先,算法的看些基本的,比如排序等即可,而智力题,除非是校招,否则一般不怎么会问。

关于面试刷题,我个人也准备了一套系统的面试题,帮助你举一反三。

总结

改变人生,没有什么捷径可言,这条路需要自己亲自去走一走,只有深入思考,不断反思总结,保持学习的热情,一步一步构建自己完整的知识体系,才是最终的制胜之道,也是程序员应该承担的使命。

以上内容均放在了开源项目:【github】 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

0 人点赞