程序员面经分享:面试前到底该不该刷题以及面试前该如何准备

本文主要分享最近面试的总结心得与规划。包含:面试准备,简历建议,投递简历方法,面试问题,面试安排,面试前的准备,如何与面试官的交流,如何与面试官沟通,如何回答问题等。

基本情况

本人非985、211毕业。大学的时候没有目标和方向,每天除了上课就是怎么开心怎么来。后来得知大四要实习,也看到学长们就业那么困难,所以开始为自己的未来担忧,开始学习大学课程(电子相关专业),但是发现自己并不喜欢,但是也不知道该去学什么。无意间知道java,出去比较好找工作,所以开始自学,后来又学习Android。然后在大四的时候开始来北京工作,一直到现在。

面试准备

首先我不建议频繁的跳槽,除非被逼无奈,频发跳槽,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段事件你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会代来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。

1. 面试复习

复习要尽可能短一些,在自己的长处,比如:前端,后台,框架源码,framework等等去好好的梳理一下,成为自己的特点和优势就好。然后面试前1-2天把一些面试常考的知识点复习一下牢牢记住,就可以了,不用等自己100%的准备好才去面试,因为那事不可能的。你根本复习不过来。60-70%就很好了,剩下的就在面试中去回顾吧。

2. 简历制作

简历制作是一种学问,一份好的简历往往让人眼前一亮。同时简历要突出重点

技能特长

尽量不要有精通,除非你真的“精通”。否则就是给自己挖坑。也不要写一些太过常见的技能,比如:了解Activity的生命周期。谁都知道的东西,没别要单拿出来。不要太长或太短10-12个技能特长左右。宗旨在于表达的特点简单明了,其他的点大家在自己搓摩下。

项目介绍

如果你是实习,那么你一定要有自己在大学项目,或是毕业设计,或是团队项目。如果是在职一定要有公司的项目。同时项目不宜过多2-3个即可。同时项目介绍不要太过啰嗦,3-5行,突出架构,核心技术,主要功能与模块即可,同时写出自己在其中做了那部分内容。(这部分要写好,因为面试官很可能会问你,你开发中遇到的问题,难点,优化,协作,调试等相关问题)

其他技能

如果有英语4、6级一定要写上,有github,个人blog一定要写上地址。这我就不用说了吧。

最后我还是希望大家提高自己的实力,实力才是硬道理。这里给大家分享我收集整理的简历模板,有需要的小伙伴文末有领取方式,都是无偿的!

程序员面经分享:面试前到底该不该刷题以及面试前该如何准备_第1张图片

3. 简历投递

如果说简历制作是门学问,那么简历投递一定是一个技巧了。投的好你就会有面试邀请,投的不好,即使你能力再好也是过不去的。所以投好简历至关重要。那么我们可以从这几个方面入手:

网站选择

现在主流的网站有智联,BOSS直聘,拉钩。如果你这些投递完后面试邀请还不是很多,可以试试中华英才,前程无忧,猎聘同道。其他的软件基本就没什么作用了,智联可以海投,能力好可以看公司方向投递。拉钩有投递上线,可以多创建几个拉钩重复投递,BOSS的话可以在坐公交或是面试之余去投,这个主要是以聊为主,如果谁看了你的简历,那么你可以主动沟通。

投递时间

你可以选择在周日晚间投递,这样在周一HR上班时候你的简历不会排的太远。平时也是在每天的6-8点投递为好,这样如果HR去看的话,会容易看到一些

其他注意

如果你是半年或是一年经验,可以多写一点,当然面试的时候给的简历就要真实了。因为有些情况,如果你工作太短,无论你多优秀也不会有太多的面试机会,因为人家的硬性条件你都过不去。

4. 面试准备

个人准备

如果你是在大城市,一定要把手机充好电(带着充电宝),因为去哪里都要导航,还有就是提前就多买点吃的,因为你可能为了干面试一天都吃不上饭(深有体会)。带好简历和纸笔。

面试安排

如果面试邀请比较多的话,一定要用Excel做好表格,然后尽量把相同地点的安排在一起,这样你就可以不用来回跑,可以一天面3-4个。还能节省时间和体力。

面试排期

面试多的话,不要一天排超过4个,2-3个最好,有时候可能会赶不上,同时会给人家造成不好的印象,同时对自己太多劳累。

面试题汇总

XXXX清承科技有限公司

java核心思想
java高级知识,注解,反射,泛型的理解与作用
framework有那方面什么理解
Activity的生命周期与启动模式
性能优化
内存优化
数据结构(这方面是我的弱项,于是给我一个场景让我如何去选择,为什么)
Bitmap如果优化,他的三级缓存的大致思想与逻辑
给我说一个你项目中你用到的自定义View的实现,不用细节到代码,主要的思想与核心方法输出即可。
ListView如何优化,复用的原理,为什么会图片错位,如何解决,分页的思想是什么。
你在公司中用的什么代码管理,如何解决git冲突。你在工作中你的职责和主要内容等工作相关的问题。

XXX云公司

手写三种单例模式,冒泡排序
java线程,场景实现,多个线程如何同时请求,返回的结果如何等待所有线程数据完成后合成一个数据
线程种类
Android子线程与主线程交互方式,原理以及各自的优缺点。
有哪几种创建线程的方式,优缺点。
项目介绍,开源框架的认识如何封装,项目中的难点
Activity的生命周期,热修复的实现原理与区别(因为我简历里写了)。
在实际开发中的内存泄漏产生原因,如何查看,和你所知道的内存泄漏检测工具
项目介绍,项目提问,了解Android等技术途径等。
git相关(这我装了一波,说我都是手写命令,因为当时是看书学的,因为在github上不存在冲突,所以真的就习惯性的用命令操作github)

XXX驾科技有限公司

handle的使用与原理
线程切换与线程池的种类与作用,什么情况下使用多线程,有什么好处
简单介绍四大组件
Manfest.xml的里有什么和作用
什么是多进程,进程和线程的区别,如何给四大组件指定多进程。
多进程之间的通信的方式,如何使用AIDL。他的使用场景是什么。
View的加载流程
如何实现一个自定义View
如何选择第三方,从那些方面考虑
内存优化
bitmap的三级缓存思想与如何优化bitmap
注解的作用与原理
设计一个音乐播放界面,你会如何实现,用到那些类,如何设计,如何定义接口,如何与后台交互,如何缓存与下载,如何优化(15分钟时间)
什么是hash,他的作用是什么。hashMap源码是什么,他是依据什么原理实现的。
手写一段代码,如何找出一段字符串中,出现最多的汉字是哪个。

XXXX投约牛科技

说下你了解那些framework。
说说你对布局优化的理解
你是如何实现类始于QQ表情图的,实现动图与图文并现的原理你简单说下(项目中有)
说下当前你所知道的热更新与插件化,他们的实现核心原理是什么,他的异同有什么。
从那些角度可以减少APK体积的
对gradle命令与打包,接触过那些平台的上架
简单说下接入支付的流程,是否自己接入过支付功能
谈谈你对自定义View的理解,如果有一个需求你会如何实现一个自定义View
说下LinkedList与ArrayList,HashTable与HashMap的区别与存储过程与遍历方式。
说下你都看过那些技术书籍,你是如何自学的。你觉得自己的优势与弱点是什么。
说下四大组件的启动过程(从Framework层去说,不必说出每个方法的名字,大致流程即可)。四大组件的启动与销毁的方式。
Android的数据存储方式有哪些,是否SQLite中要继承那个类来创建与更新数据库。SQL语句掌握怎么样。如何得到操作数据库的类等。
说下你对多进程的理解,什么情况下要使用多进程,为什么要使用多进程,在多进程的情况下为什么要使用进程通讯。
说下你用过的那些第三方,是否可展示。

XXXX智能

说下你所知道的设计模式与使用场景
java语言的特点与是OOP思想
说下java中的线程创建方式,线程池的工作原理。
说下handle原理,为什么会出现内存泄漏,为什么继承Handle就不会出现能存泄漏
说下Activity的启动方式,生命周期,两个Activity跳转的生命周期,如果一个Activity跳转另一个Activity再按下Home键在回到Activity的生命周期是什么样的
说下Activity的横竖屏的切换的生命周期,用那个方法来保存数据,两者的区别。触发在什么时候在那个方法里可以获取数据等。
说下冷启动与热启动是什么,区别,如何优化,使用场景等。
Android中的线程有那些(我提到HandlerThread,AsyncTask又问了他们的原理与各自特点)
给定命题,一串字符串中有通配符与占位符,如何化简优化(方法忘记可以简写)
说下产生OOM,ANR的原因,三级缓存原理,如何优化ListView。
说下你对Collection这个类的理解。
说下AIDL的使用与原理
说下你对广播的理解
说下你对服务的理解,如何杀死一个服务。服务的生命周期(start与bind)。
是否接触过蓝牙等开发
设计一个ListView左右分页排版的功能自定义View,说出主要的方法。
说下binder序列化与反序列化的过程,与使用过程
是否接触过JNI/NDK,java如何调用C语言的方法
如何查看模拟器中的SP与SQList文件。如何可视化查看布局嵌套层数与加载时间。
你说用的代码管理工具什么,为什么会产生代码冲突,该如何解决
说下你对后台的编程有那些认识,聊些前端那些方面的知识。
说下你对线程池的理解,如何创建一个线程池与使用。
说下你用过那些注解框架,他们的原理是什么。自己实现过,或是理解他的工作过程吗?
说下java虚拟机的理解,回收机制,JVM是如何回收对象的,有哪些方法等
一些java与Android源码相关知识等

XXXXBT

数据结构与算法相关
实际开发中的内存优化,APK体积优化,代码优化,资源优化,缓存,数据库等
各大平台打包上线的流程与审核时间,常见问题(主流的应用市场说出3-4)
支付宝与微信的支付功能接入,常见问题
如何和后台交互,post请求的数据格式定义在那里定义,手写出来。
http与https的理解与4层都是哪4层,在一个请求过程中都是什么时候走这些流程与各自的作用
http的结构有那些(请求头,请求行之类的)
session与cookie的区别
如何在后台没有给接口的情况下如何开发应用
你是如何封装网络请求,数据缓存,优化,文件下载,线程池,OKHttp3源码的理解,如何提交post请求,如何处理返回数据,异常处理,实体定义等实际开发中与后台协作相关知识。
说下Android中特有的数据结构与常见的java数据结构(熟悉那个说那个),存储过程,源码与底层实现。

我的面试中,framework,线程,数据结构与算法基础知识,开发实际问题,自定义View相关,四大组件与加载流程源码,框架源码的理解程度与原理,MVP架构的理解,接口与抽象的使用场景,Handle相关,线程切换,内存,性能优化等等都是常见的问题。

程序员面经分享:面试前到底该不该刷题以及面试前该如何准备_第2张图片

程序员面经分享:面试前到底该不该刷题以及面试前该如何准备_第3张图片

面试通用问题回答技巧

自我介绍

这个时候往往是面试官看你简历内容的时候,但是我们的介绍也要简单明了,可以从这几个方面:

个人信息:简单的个人信息介绍(名字,年龄等),大学,毕业时间
公司介绍:上家工作主要方向,你再什么部门,日常做什么工作,你承担什么角色等
个人特色:比如你课余事件喜欢看书,写博客等介绍

个人职业规划

例:我会在以后的1-3年学好java基础,数据结构与算法,主动去了解后台开发,同时在公司业务方面的Android方向深入,坚持看书写博客,再学一门语言等

向面试官提问:

举个栗子:

根据面试,您觉得我的能力是否能够胜任贵公司的工作
您觉得我哪方面知识需要深入学习或者我的不足在那些方面,今后我该注意什么

这些问题不仅能帮助你,还能对这次面试做到心中有数。

总结

通过这阶段面试,主要认识到自己java基础,源码阅读能力,数据结构与算法,网络编程知识与实际开发出现问题的总结能力还有待加强,这是一个面试重点,也是自己今后需要努力的方向,同时自学能力也是面试一个重要因素,所以我们不要成为码农,而要成为一个优秀的程序员这才是我们努力的方向,做好规划,努力学习,记录总结。养成这样的习惯。

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容,或者点击 【这里】 查看获取方式。最后祝愿大家都有一个好工作,加油!!!!

你可能感兴趣的:(android程序员面试问题)