此文但愿能给那些想跳槽的朋友一些参考。前端
前言
咱们随着工做时间的增长和技术经验的积累。原先的公司不必定能提供给你想要的发展空间与前景。说直接点,家里还有老婆孩子还有老父母,咱们须要更高的薪酬来让他们过上更好的生活。因此跳槽是个不错的选择。
java
夏末的时候我就有了跳槽的想法。而后就是不断的跑了不少家公司面试。先后花了将近两个月时间。拿到了华为,美团,去哪儿以及一些不太出名的公司的offer。首先是准备简历,而后就是过一下面试题。android
简历的编写其实这里可能须要注意几点;
1.标题的直接按照姓名-几年工做经验-应聘岗位格式来填写。git
例如 黄铭——四年工做经验——Android开发高级工程师。 由于要知道,HR筛选简历是很是快的,你要在第一时间就让他看到他想要看的信息。HR一开始最关心的就是工做年限和岗位,你直接在标题栏用最大的字体写出来会比不少人介绍了半天项目最后写年限要好得多。github
2.我的信息写最前面。面试
我的信息栏其实不用写不少东西,最主要的就是姓名、联系方式、性别、若是学校是名校那么就写上,若是本科学的是计算机专业也能够在这里写上,若是都不是就最好放到最后去写,由于最前面的东西永远是最早看到的内容,也是你最有竞争力和卖弄的资本。算法
3.有技术博客和github开源项目的必定写在最前面。安全
这是活生生的例子。我在面试华为的时候面试官就特地去看了个人csdn上的博客。而后说写的仍是不错的,给他留下了一个不错的印象,因此这点是绝对的加分项最好就是写在最前面。性能优化
刷面试题这块其实一开始我并无刷特别多,也就是简单的看了下一些基础性的知识点。由于我始终以为看的越多越记不住,并且最重要的是你根本不知道面试官会怎么问,与其盲目的看知识点倒不如先出去找几家小公司面试找找感受,知道面试官会针对哪些地方询问,再回来针对性的看。网络
面试阶段
因为我不是裸辞的状态,因此面试对我来讲其实不是那么着急和有压力。我陆陆续续的面试了差很少两个月左右,面了十来家公司。固然,前面面试的几家公司彻底是试试水的状态;每次面试回来我都要作一些笔记让本身知道本身不足。因此这样一来二去后面的状态就愈来愈好了。针对android这块的面试题目其实主要仍是基础性的原理之类的。
Java基础问题
-
HashMap的内部原理。 主要是内部的hash碰撞、resize()等。还会与HashTable进行对比,说出相同与不一样点。做为延伸可能还会问concurrentHashMap的分步锁问题。
-
java中建立线程的方式有几种。 通常而言不少人会回答两种,Thread与Runnable。我最先面试的时候也是说这两种,而后面试官问还有别的吗?我当时就没答上来,其实还有一种叫Callable的。这里可能还须要理解下Callable与Runnable的区别以及使用时候的注意事项。
-
线程阻塞的方式。主要仍是考察sleep、wait、yield与join的区别。
-
死锁形成的缘由、手写死锁。synchronized 关键字
-
线程池ThreadPoolExecutor的使用,内部处理任务的过程以及四种线程池的区别。
-
Java中的四种引用以及使用的场景
- java中GC回收算法以及年代区分问题等
java方面的问题印象中差很少就是问上面几个问题,只要了解了这些java这段问题不是很大。
Android的基础问题。
-
Activity的启动模式、standard、singleTop、singleTask、singleInstance的区别。 这里须要重点注意的是singleTask启动时候的回调onNewIntent以及不一样栈之间的Activity如何跳转。我在面试腾讯的时候就被问到过这个问题。
-
Service的启动模式和生命周期,会延伸到Binder和IntentService,这里最好去看下IntentService的原理和源码。看了源码以后还会延伸到HandThread的问题。
-
Android消息机制Handler。这是常问也是必问的问题,除了要知道内部原理和源码之外还要清楚形成内存泄漏的缘由和处理方式。
-
事件分发原理。这里主要会问事件分发的流程以及进行拦截时候onInterceptTouchEvent返回true时剩下的MOVE与UP如何走,onTouch、onTouchEvent、onClick的前后顺序关系。
-
AsyncTask内部实现原理。 这个在平安人寿以及投哪儿网二面领导问道过。主要是AsyncTask内部如何实现的,内部处理多任务是串行仍是并行处理,为何是串行处理,若是让其变成并行处理等。
-
LruCache算法如何实现,内部为何要用LinkHashMap来实现。
-
进程之间的通讯方式,IPC原理。 这里会延伸到AIDL和Binder。
-
进程之间的优先级。 前台进程、可见进程、后台进程、不可见进程与空进程。腾讯面的时候还特地问了我进程的保活措施。
-
图片的压缩处理。 这里会问四种图片格式的区别(ARGB88八、RGB56五、RGB44四、Alpha_8),以及问给出一张以上格式的图片如何计算图片所占的内存大小。
-
Serializable与Parcable的区别。 在什么状况下须要用到序列化和反序列化,Serializable中为何要设置UID,设置UID与不设置UID值的区别和影响。
-
动画总结。 重点是属性动画内部实现原理,差值器和估值器的使用。
-
Android中断点续传的原理、热更新的原理。 珍爱网面试个人时候问了这个,当时没了解过,很遗憾的没回答出来。
-
Android的性能优化。 布局优化(include、merge和viewstub标签的使用)、绘制优化(不要在onDraw方法里面建立新的对象)、内存泄漏优化,检测内存的方式和内存泄露形成的缘由等。
-
网络请求原理。 http与https的区别、三次握手和四次挥手,为何握手必定要三次?为何挥手必定要四次?http的响应码。http1与http2的区别等。
- 开源框架的使用和原理。 OkHttp内部实现、glide的内部原理、EventBus源码和RxJava的使用过程注意事项等。
我印象中差很少就是问这些东西,其实都是很基础的Android知识,只是问的比较深刻,若是不明白内部的实现原理不少问题实际上是回答不上来的。因此仍是要多看源码才能了解本质问题。
最后问的就是算法。这个算法基本大公司都会问。缘由很简单,一个公司以为你连算法这么难的都会了,那么其余的知识即使如今不会回去看下学习下很快就能掌握。而且我听闻有这么一种传统,在国外相似于Google、Facebook这种公司,通常面试问的就全是算法,并且是很难的算法。只要你算法过关了,那么无论你作没作过Android开发,你均可以去Android部门工做。这里推荐《剑指offer》这本书或者去领克上刷题。
当面试官问“你有什么要问个人吗”时,应该说什么?
这是咱们大部分面试者都会遇到或者都会被问到的问题。若是你回答 “ 没有 ”,这每每被一些面试官理解为:你对应聘公司、工做岗位没有太大的兴趣。可能会让面试官产生误解,而影响面试评判。
若是你回答 “ 有 ”,一时间又容易脑子短路,可能会不知道该问如下哪一个问题:
问企业发展?怕面试官以为这我的好虚,有点不切实际
问薪资待遇、假期福利?又怕面试官以为这我的没有事业心,入职了也不会呆过久的,成天就想着休息……
那怎么办?
首先,你必须提问
面试每每是互相了解事后,面试者处于被动状态,这个时候面试官将问题抛出,你必须把握住主动权,让面试官知道你是认真对待此次面试,而不是敷衍的流水线面试。
那么,问什么呢?
无论面试官是HR、部门领导,仍是老板,如下问题均可以帮你轻松度过难关,并且你还能从面试官的回答中获得不少意外收获:
你在公司的一天是如何度过的?
这个简单的问题可让对方口若悬河的讲述他一天的工做,面试官会说一些比较自豪和有意义的事情,同时也会有一些琐碎的事情。在听的过程当中,你也能感觉到将来工做中是否有你的兴趣点,以及最无聊的那个部分你是否是能够接受。同时也能够从中推估到你的将来发展,由于升职后也会有一天成为他。我去腾讯面试的时候就问了这个问题,而后他说了下他一天干的活,我才知道腾讯的加班是有多严重,我曾跟他说我每周一二四加班,本觉得他会说你加班真多啊,结果没想到他来一句说你加班也很少呀,咱们不少都是十二点之后走的。我当时就懵逼。这样比你直接问他公司加班多吗要好不少。
可否给我简单介绍下贵公司业务与战略的将来发展?
在实际运用时,要取决于公司的业务范围。听听面试官的计划,这可显出你关注公司总体和将来的发展。同时也能够从他们的谈论中了解到不一样公司在同一个行业的状况,对你准备其余公司的面试也会有所帮助。面试一些小公司的时候我就喜欢去问这个问题,经过这个问题我就大概能清楚知道这些公司适合不适合我还有就是能够知道老板究竟是喜欢扯淡仍是真正的一个实干家。
贵公司最让你自豪的企业文化是什么?
注意!通常状况下,这个问题比较适合用在面试大公司的职位时,固然如今有很多创业公司也是很是看重企业文化的。经过这个问题,你能够从面试官口中了解到公司的工做氛围和一些非硬件的环境状况,同时也能够在面试官表达的过程当中去留意他的肢体、感情的表达。若是从身体语言上都表达出认同公司的文化,那说明该公司在企业文化建设方面作得不错。同时你也能够自我假设一下是否能够融入这种氛围。
团队、公司如今面临的最大挑战是什么?
这个问题比较安全,也是一个能够引发面试官兴趣的话题。一来这个问题不会暴露你对公司的不了解,二来也能让你对将来工做的挑战或困难有一个提早的预期。除此以外 ,这类问题用的好,会很容易增长印象分。特别当面试官是外国或海归人士时,比较直接一点绝对不是坏事儿!
对于将来加入这个团队,你对个人指望是什么?
若是面试官将会是你的直属上司,那么这个问题会让你的利益相关者一开始就有一个感受,你是一个很是在意他或者团队,而且愿意倾听的候选人。这样对于快速的培养起一段专业的合做关系是颇有帮助的,同时也能够更理解他对你的指望值。也能够初步判断出他是一个成果导向,仍是过程导向的上司;是一个由上至下思考,仍是一个下至上思考的领导。若是把握准确会更会令面试官以为:你是一个会作好准备而且有同理心的人,这绝对是加分项。
我指望参与团队合做达成共同目标,您能够给我举一个公司中团队合做的实例吗?
这一问题也是要根据你面试的企业状况来定夺,若是面试的是大企业,同时又是外企,那么合做对于他们来讲是必须的,由于不少事情你一我的是不可能完成,因此天然会很是看重你对合做的态度。经过这个问题,可让面试官知道你有强烈的合做倾向。同时从回答中,你也能够感觉到这个公司团队合做的状况如何。
经过刚才的面试交流,您以为我还有那些不足?
这几乎是我面试都会回问的问题。经过这个问题,我就可以知道本身在他们眼里的不足之处,回去能够作好的修改。例如,我在面珍爱网的时候,他们给个人评价是基础还行,可是深度不够而且对本身将来的职业规划不清晰。由于我回答了我想作大前端,而后转管理。他们就以为你一下想作技术一下又想作管理,这目标不清晰。因此后来我就直接说本身想作大前端,就没有说再后来转管理的事情了。
面试题以及答案
经过不一样的面试,记录下本身的面试过程从而才能更好的提高本身的。
如下附上android面试相关的题目和答案,通常3-5年的把下面的题目搞懂了,面试应该没啥问题。
因为文章篇幅问题复制连接查看详细文章以及获取学习笔记连接:https://shimo.im/docs/QVGDhCjVKvQ6r6TJ
或者能够查看个人【Github】里能够查看
我基本就是按照以上的题目来刷的,发现面试中的问题在这里面基本上所有问遍了。祝你也能找到一个好工做。