我三年工作经验,两个知名大厂背景,25k,想年后跳槽去个小公司带队伍,为了了解小公司的情况,我用个假简历去面试了6,7家小公司,下面我说说具体情况:&br&&br&
简历内容大概是:外包公司1年经验,二本计算机专业,两个app背景(就是我参与过的项目的精简版本),期望薪资10k。&br&&br&
面试这几家公司大致分为两类:一类是一个做android的面我,一类是没有android经验的CEO或CTO直接面我:&br&&br&
CTO这类面试我的说几句就能看出来没做过android,有的连android本地可以存数据库都不知道,只能按我的简历上的内容随便问问,再扯扯简单的设计模式,算法就问我冒泡排序这类的水平,问的一个业务场景(比较扯淡的)怎么优化,我说用字典树他居然没听过,还有个问我二分排序和快速排序哪个快的。。。这些boss几乎无一例外都问我网络这块,问我怎么访问网络,http请求头,这类东西基本app刚做时候就一个人做,而且基本整个软件周期就写那么一次,而且都是API封装好的他们还都可喜欢问了,还有什么更书本的三次握手,get/post这些。。。&br&&br&
做android的这类面试聊天还挺愉快,问的都是怎么布局啊,循环viewpager怎么实现啊,他们的app都是开源框架搭起来的,一些核心的,细的东西也没问我,他们有的说错的不对的我深究一下,就说“你回去查查,我不跟你说了&这样的话,我基本也没继续深究下去。&br&&br&&b&
面了这么些共同特点有一个,那就是我没得到一个offer,offer,fer, er!&/b&&br&&br&
于是我对人生产生了怀疑,应届生找工作的时候我就是这样屡屡碰壁,现在作为”一年经验的“还是这样,觉得很多面试官如果不看背景,很难区分出这个人具备什么样的技术和能力,也能体会到应届生找工作是多么的无奈,为什么会有这样的结果?&br&&br&&br&&u&/**&/u&&br&&u&*
说我装x,钓鱼的,我都匿名发布的,图个啥?我就是分享一下我的经历,不能正常&/u&&br&&u&* 回答的请你别答。&br&
说我简历造假的希望你们谅解,我用真简历试过,简历都过不去,我没去呆过小公司,&br&
想去小厂我很想亲自了解下情况才用了这招,也不能说造假吧,比如有很多街头试验也&br&
* 差不多这个意思,希望别钻这个牛角尖,主要讨论下我这种遭遇吧。&br&**/&/u&
我三年工作经验,两个知名大厂背景,25k,想年后跳槽去个小公司带队伍,为了了解小公司的情况,我用个假简历去面试了6,7家小公司,下面我说说具体情况:
简历内容大概是:外包公司1年经验,二本计算机专业,两个app背景(就是我参与过的项目的精简版本),期望薪资10k。
面试这几家公司大致分为两类:一类是一个做android的面我,一类是没有android经验的CEO或CTO直接面我:
CTO这类面试我的说几句就能看出来没做过android,有的连android本地可以存数据库都不知道,只能按我的简历上的内容随便问问,再扯扯简单的设计模式,算法就问我冒泡排序这类的水平,问的一个业务场景(比较扯淡的)怎么优化,我说用字典树他居然没听过,还有个问我二分排序和快速排序哪个快的。。。这些boss几乎无一例外都问我网络这块,问我怎么访问网络,http请求头,这类东西基本app刚做时候就一个人做,而且基本整个软件周期就写那么一次,而且都是API封装好的他们还都可喜欢问了,还有什么更书本的三次握手,get/post这些。。。
做android的这类面试聊天还挺愉快,问的都是怎么布局啊,循环viewpager怎么实现啊,他们的app都是开源框架搭起来的,一些核心的,细的东西也没问我,他们有的说错的不对的我深究一下,就说“你回去查查,我不跟你说了"这样的话,我基本也没继续深究下去。
面了这么些共同特点有一个,那就是我没得到一个offer,offer,fer, er!…
结果为什么会这样?工作原因,之前一直在做程序员签约审核工作,看了不下500位程序员的简历。加上参与身边朋友公司大量招聘的经历,让我有了一个非常深刻切身的体会:『招聘其实和个人能力并不成正相关』反而和你怎么写简历怎么show自己有关系。 对于已经工作过的程序员简历上只要贴上知名大厂产品背景,20万+年薪,N(N不要大于10)年工作经验。这个都是属于被抢着要的。当然这并不代表这个程序员就一定是能力最好、代码写得最好的。对于应届生,简历中只要有名校经历,一件证明你牛逼的事,表明你的稀缺性、发展能力和跪舔求知的态度,自然也是很容易拿到offer。总结起来,在工作能力基本胜任的情况下 就是一看经历背景;二看稀缺性、发展能力和跪舔求知的态度;三看资源人脉口碑背书。而这几样东西真的不好用喊你做做题就能算出来的,所以大部分还是要看缘分。遇到一个不做准备,随意换工作不规划不调查的求职者自然也是悲剧居多。当然这一切还需要看公司现在是不是真的需要招聘,很多公司的长期招聘属于储备性招聘,当然拒掉offer的情况多。如果再遇到一个门外汉HR(对于很多不懂装懂的HR小妹 差评)... 所以也不要太悲伤,求职时间不对,完全和你没有一毛关系其他至于被拘,当然是违背了上面HR、BOSS的三点识人原则。或者属于有东西可以放简历,但是文笔不行,写得不认真仔细,被自己浪费掉了。我推荐大家看看
回答过的这个问题: 里面主人翁 Feross Aboukhadijeh 真的是一个极好的学习榜样重点部分贴个图
我也对这样的实验很感兴趣,希望题主再多试几个,或者说一下自己的想法&br&&br&感觉有点印证了我的想法,招聘更多招的是眼缘,和个人能力其实无关的&br&&br&---------------------分割线----------------------------------&br&&br&看了一下其他的回答,感觉也有一个很有意思的现象。大部分为题主点赞,或者像我这样觉得这个实验有意思的人,都是技术人员&br&&br&像我们这种手艺人,能力就是我们的本钱,所以我们都希望自己的能力越强,就越受社会的青睐,世界就像我们写的程序一样简单,有什么样的输入,就出来什么样的输出。这就是为什么知乎上这么多应届生被刷后,总是要问自己为什么被刷,其实他们更想知道的是,自己的技术又哪些不过关,好回去提升。哪怕已经在社会混了好几年了,知道世界不是这么简单,但潜意识还是希望世界不要这么残酷&br&&br&刚好题主做的实验很接近我们想要的答案,哪怕这个答案可能会击溃我们的三观,但程序员最害怕的不是输出不符合预期,而是每次输入都得到不一样的输出
我也对这样的实验很感兴趣,希望题主再多试几个,或者说一下自己的想法 感觉有点印证了我的想法,招聘更多招的是眼缘,和个人能力其实无关的 ---------------------分割线---------------------------------- 看了一下其他的回答,感觉也有一个很有意思的现…
It's a good question,想我当时找实习找工作也被不靠谱的公司和部门拒过好多次。&br&&br&我猜测这是因为大公司和其他公司的招人策略是不一样的。&br&&br&1. 对于题主呆的大公司来说,招人的策略可能是,候选人是否足够的聪明,综合素质怎么样,因为公司相信对于具体的技术,等到了公司再学就好了。&br&&br&2. 对于题主面的小公司来说,招人的策略可能是,是否能马上过来干活,也就是说,公司目前用的这一套东西,候选人是否能马上&b&融入这个团队&/b&充当螺丝钉。除了senior的leaders,小公司可能也没打算长期留住人。&br&&br&此外我猜测题主被拒还有一个原因,就是和我一样,在一些问题中有strong point,对一些原则问题有底线。我记得我面试某创业公司的时候,对于一开始发的“户口调查表”,我拒绝填写关于家人的详细信息,而被认为是性格与公司价值观不符(我找推荐我的人问过原因)。对于题主面的小公司,可能他们倾向于那种“任劳任怨”的人,而不需要对上级安排的任务有所质疑。
It's a good question,想我当时找实习找工作也被不靠谱的公司和部门拒过好多次。 我猜测这是因为大公司和其他公司的招人策略是不一样的。 1. 对于题主呆的大公司来说,招人的策略可能是,候选人是否足够的聪明,综合素质怎么样,因为公司相信对于具体的技…
已有帐号?
无法登录?
社交帐号登录
程序员客栈我三年工作经验,两个知名大厂背景,25k,想年后跳槽去个小公司带队伍,为了了解小公司的情况,我用个假简历去面试了6,7家小公司,下面我说说具体情况:&br&&br&
简历内容大概是:外包公司1年经验,二本计算机专业,两个app背景(就是我参与过的项目的精简版本),期望薪资10k。&br&&br&
面试这几家公司大致分为两类:一类是一个做android的面我,一类是没有android经验的CEO或CTO直接面我:&br&&br&
CTO这类面试我的说几句就能看出来没做过android,有的连android本地可以存数据库都不知道,只能按我的简历上的内容随便问问,再扯扯简单的设计模式,算法就问我冒泡排序这类的水平,问的一个业务场景(比较扯淡的)怎么优化,我说用字典树他居然没听过,还有个问我二分排序和快速排序哪个快的。。。这些boss几乎无一例外都问我网络这块,问我怎么访问网络,http请求头,这类东西基本app刚做时候就一个人做,而且基本整个软件周期就写那么一次,而且都是API封装好的他们还都可喜欢问了,还有什么更书本的三次握手,get/post这些。。。&br&&br&
做android的这类面试聊天还挺愉快,问的都是怎么布局啊,循环viewpager怎么实现啊,他们的app都是开源框架搭起来的,一些核心的,细的东西也没问我,他们有的说错的不对的我深究一下,就说“你回去查查,我不跟你说了&这样的话,我基本也没继续深究下去。&br&&br&&b&
面了这么些共同特点有一个,那就是我没得到一个offer,offer,fer, er!&/b&&br&&br&
于是我对人生产生了怀疑,应届生找工作的时候我就是这样屡屡碰壁,现在作为”一年经验的“还是这样,觉得很多面试官如果不看背景,很难区分出这个人具备什么样的技术和能力,也能体会到应届生找工作是多么的无奈,为什么会有这样的结果?&br&&br&&br&&u&/**&/u&&br&&u&*
说我装x,钓鱼的,我都匿名发布的,图个啥?我就是分享一下我的经历,不能正常&/u&&br&&u&* 回答的请你别答。&br&
说我简历造假的希望你们谅解,我用真简历试过,简历都过不去,我没去呆过小公司,&br&
想去小厂我很想亲自了解下情况才用了这招,也不能说造假吧,比如有很多街头试验也&br&
* 差不多这个意思,希望别钻这个牛角尖,主要讨论下我这种遭遇吧。&br&**/&/u&
我三年工作经验,两个知名大厂背景,25k,想年后跳槽去个小公司带队伍,为了了解小公司的情况,我用个假简历去面试了6,7家小公司,下面我说说具体情况:
简历内容大概是:外包公司1年经验,二本计算机专业,两个app背景(就是我参与过的项目的精简版本),期望薪资10k。
面试这几家公司大致分为两类:一类是一个做android的面我,一类是没有android经验的CEO或CTO直接面我:
CTO这类面试我的说几句就能看出来没做过android,有的连android本地可以存数据库都不知道,只能按我的简历上的内容随便问问,再扯扯简单的设计模式,算法就问我冒泡排序这类的水平,问的一个业务场景(比较扯淡的)怎么优化,我说用字典树他居然没听过,还有个问我二分排序和快速排序哪个快的。。。这些boss几乎无一例外都问我网络这块,问我怎么访问网络,http请求头,这类东西基本app刚做时候就一个人做,而且基本整个软件周期就写那么一次,而且都是API封装好的他们还都可喜欢问了,还有什么更书本的三次握手,get/post这些。。。
做android的这类面试聊天还挺愉快,问的都是怎么布局啊,循环viewpager怎么实现啊,他们的app都是开源框架搭起来的,一些核心的,细的东西也没问我,他们有的说错的不对的我深究一下,就说“你回去查查,我不跟你说了"这样的话,我基本也没继续深究下去。
面了这么些共同特点有一个,那就是我没得到一个offer,offer,fer, er!…
招资深iOS,android,java 开发技术骨干,能力越强越好。薪资?15k~35k可谈,简历邮件: 求扩散。
我也对这样的实验很感兴趣,希望题主再多试几个,或者说一下自己的想法&br&&br&感觉有点印证了我的想法,招聘更多招的是眼缘,和个人能力其实无关的&br&&br&---------------------分割线----------------------------------&br&&br&看了一下其他的回答,感觉也有一个很有意思的现象。大部分为题主点赞,或者像我这样觉得这个实验有意思的人,都是技术人员&br&&br&像我们这种手艺人,能力就是我们的本钱,所以我们都希望自己的能力越强,就越受社会的青睐,世界就像我们写的程序一样简单,有什么样的输入,就出来什么样的输出。这就是为什么知乎上这么多应届生被刷后,总是要问自己为什么被刷,其实他们更想知道的是,自己的技术又哪些不过关,好回去提升。哪怕已经在社会混了好几年了,知道世界不是这么简单,但潜意识还是希望世界不要这么残酷&br&&br&刚好题主做的实验很接近我们想要的答案,哪怕这个答案可能会击溃我们的三观,但程序员最害怕的不是输出不符合预期,而是每次输入都得到不一样的输出
我也对这样的实验很感兴趣,希望题主再多试几个,或者说一下自己的想法 感觉有点印证了我的想法,招聘更多招的是眼缘,和个人能力其实无关的 ---------------------分割线---------------------------------- 看了一下其他的回答,感觉也有一个很有意思的现…
It's a good question,想我当时找实习找工作也被不靠谱的公司和部门拒过好多次。&br&&br&我猜测这是因为大公司和其他公司的招人策略是不一样的。&br&&br&1. 对于题主呆的大公司来说,招人的策略可能是,候选人是否足够的聪明,综合素质怎么样,因为公司相信对于具体的技术,等到了公司再学就好了。&br&&br&2. 对于题主面的小公司来说,招人的策略可能是,是否能马上过来干活,也就是说,公司目前用的这一套东西,候选人是否能马上&b&融入这个团队&/b&充当螺丝钉。除了senior的leaders,小公司可能也没打算长期留住人。&br&&br&此外我猜测题主被拒还有一个原因,就是和我一样,在一些问题中有strong point,对一些原则问题有底线。我记得我面试某创业公司的时候,对于一开始发的“户口调查表”,我拒绝填写关于家人的详细信息,而被认为是性格与公司价值观不符(我找推荐我的人问过原因)。对于题主面的小公司,可能他们倾向于那种“任劳任怨”的人,而不需要对上级安排的任务有所质疑。
It's a good question,想我当时找实习找工作也被不靠谱的公司和部门拒过好多次。 我猜测这是因为大公司和其他公司的招人策略是不一样的。 1. 对于题主呆的大公司来说,招人的策略可能是,候选人是否足够的聪明,综合素质怎么样,因为公司相信对于具体的技…
已有帐号?
无法登录?
社交帐号登录怎么准备Android面试?
大四课程结束了,准备找实习。想找Android开发,该从哪些方面开始准备?
按时间排序
面对HR先拿出iPhone加个通讯录,以示友好。
在收藏的同时,麻烦顺手点个赞,谢谢啦!!最近看到很多人都在找工作, 而且很多人都感觉今年找工作比去年难很多, 竞争力也增加不少, 因此激发我整理这份资料, 希望能帮到正在找或者准备找工作的童鞋们.首先我们能否获得一个面试机会, 那肯定是从简历开始, 简历需要做好功夫,
一份好的简历才足够吸引企业得到面试机会, 接着就是面试了, 面试前必须要先做好准备, 多看一下前辈们总结面试题, 有哪一方面不足的地方赶紧补充一下, 还有要了解一下你即将面试那家公司.教你写简历面试题做题看完面试题之后那就来做一下面试题目吧, 目前找到两个网站(国外网站, 自备梯子)聊面试(帅张) 跟你谈一下面试那些事儿知乎讨论互联网招聘平台感谢非常感谢上面分享面试资料以及面试经验的的前辈们!有前辈在前面带路, 我们后辈真心感到幸福.祝福最后祝正在找工作的的童鞋们, 马到成功, 心想事成, 事事如意!关于我欢迎关注我
以及 如果感觉知乎的排版很难看,欢迎移步到
我一直遇到两种情况。1.能决定一切的码畜,会不停的技术上打转,他考量你专业水平的深度广度是否达到需求。对这种你没法做准备。2.一个不相干的未来直属领导,总是不怎么问专业领域,只谈工作概念,这种你应该要流畅地谈你写过的任何一个“故事”。以上的前提是你已经有一定积累,而不是抱佛脚。
最近公众号太多读者要求我写一篇关于面试的文章,说毕业季了,很急迫。于是我就写了,我觉得也能刚好回答这个问题,直接贴原文吧:最近太多的同学给我留言说「现在毕业季了,迫切希望张哥写一篇关于Android面试的文章」,好吧,今天终于兑现承诺了,这篇文章为你们而写。首先,你们要明白,关于面试每个公司都不一样,甚至同一家公司不同的面试官也不一样,没有一个统一的技巧或者面试流程教你们,但是对于面试是有一些通用的原则的,这些年我大小也面试过有上百人,所以姑且以一个面试官的角度来告诉你们应聘者哪些比较重要!
1. 简历这里所说的面试应该是通过简历筛选了,并且邀请来公司面谈的环节,关于怎么写简历这里就不再提了,不知道的可以看我之前写过的这篇文章「」。2. 履历不要造假这里首先强调大家一点,就是大部分靠谱点的公司都会有背景调查环节,比如你之前的教育经历,工作经历,薪资水平,离职原因等等这些千万不要造假,一旦发现有造假的,肯定不会被录取。而且如 BAT 这类大公司,甚至可能会被拉黑,永久进入黑名单。所以简历填的各种信息请一定保证真实,当然我见过有不少毕业一年的同学为了提高自己的工作经验,写成2年,因为把实习经验也算上,关于这点可能不算造假,但是严格来说也有嫌疑,有些企业可能会在乎,有些不会在乎,这个因人而异,如果觉得自己能力确实很强,但是担心自己因为工作经验不够被刷掉,不妨是一种手段,但是这里不建议这样做。3. 基本素质大部分企业招人都需要面试这个环节,那是因为只有面对面的交谈,才能看出一个人的基本素质。所以在交谈的过程中基本素质这个是默认的指标。这包括哪些呢?着装言谈,态度积极乐观,对待技术要谦逊,不要太浮夸。这点其实大部分人都没问题,但是我见到过有些对前公司特别抱怨,但是自己又没有在前公司付诸过行动去尝试改变。也见过对技术特别自信的,对没有接触过的技术或者知识很蔑视,就给你回复个这技术花点时间学习下不就ok了么?那么这个世界上有什么是花时间学习不了的东西么?还见过来面试的,但是对我们的产品不了解或者对整个公司都不了解的,这样的人,就属于基本素质不过关,不够职业。4. 基础根据招聘岗位的不同这个方面有所差别,一般是针对 Android 中级以下的人会问一些基础,对于高级 Android 工程师岗位不会问,而直接聊项目,聊产品。这方面的基础包括 Java 和 Android 的基础,比如 ArrayList 和 LinkedList 的区别,Java 的一些线程用法,Java 的 GC 原理等等,这部分基础网上一大堆关于 Java 的基础面试题,自行搜索就好,但是大多只考Java SE,涉及到 Java EE 方面的知识毕竟跟 Android 开发没多大关系,可以忽略。然后就是 Android 基础,如四大组件的具体用法,如 Activity、Fragment 的生命周期与四种启动模式,Android 动画,View 的绘制流程,Sqlite 相关,图片加载机制、网络调用等,关于 Android 方面的基础面试题网上也一大堆,这里就不详细罗列了。5. 深入知识点如果你面试的是初级岗位,那么基础知识是肯定要问的,如果你要找的是实习岗位,那么基本上只要基础够扎实就差不多了。但是大部分公司都不只问基础知识的,会配合问一些深入点的问题考察下你技术的深度,知道你大概的水平高度。而深入点的知识对于 Java 如注解原理、反射原理、Java 并发等,最重要的是基本上都会问到设计模式,这个几乎是必问, Effective Java 被认为是进阶必备的书籍,如果把这本书看完了那么对于一些面试问的设计模式也基本不是问题。对于 Android 深入的点会问一些自定义组件、性能优化,屏幕适配,IPC、Binder的理解,插件化,常用开源库以及原理等等。需要注意的是,深入的知识点不可能你每个问题都能答对,因为面试官也没奢望问的你都会,如果你是应聘的初级岗位,那么我起码知道你的技术深度到哪里,因为技术同岗位的职位也会选择最优的,如果对于中高级岗位,那么这些深入的知识点就要求高点,起码的70%、80%的知识点都知道或者熟悉吧。6. 项目经验俗话说「术业有专攻」,对于我们来说,虽然都是做的 Android 开发,但是不同的方向,意味着每个人擅长的技术领域也不一样。包括我也一样,我很多领域也没接触过,如果我只问你我擅长的领域那显然是不公平的,所以大部分面试官都会结合你的项目经验去聊。其实大部分一些固定的知识点都能答出来,区别就在于聊项目经验这块,这块可能占整个面试过程的70%以上。而大部分聊的比较深入点的知识都是围绕你的项目经验来问,至于这个项目是不是你亲自做的,一聊就知道,所以如果这个项目是你伪造的,或者是你糊弄过去的,那么面试官一聊就会立马露馅,因为大部分面试官会针对你项目的点去一步步深入下去,以一个对话来举个例子:我先开始:「这个项目你主要负责哪部分?」
「图片加载是我主要负责的」
「图片加载是你自己写的么?」
「不是,用的第三方开源项目」
「用的什么?」
「Universal Image Loader」
「恩,那说说你为什么要用它?」
「人家封装的好,使用起来方便」
「那你看过他的源码么?知不知道原理?」
「源码...看过一点」(其实我只是随便一问,但是这里支支吾吾基本就判断他撒谎)
「那说下他的缓存机制?」
「二级缓存嘛,硬盘缓存和内存缓存」
「恩,那硬盘缓存跟内存缓存他们的具体算法是怎样实现的?」
「这个...这个没怎么看,知道有个LRUCache」
「那你看过他什么源码?」
「其实这个项目很早之前看的了,有点忘记了,现在项目都用 Picasso 了」
「那好,那 Picasso 跟 UIL 有什么区别?为什么要换UIL?」
「UIL项目作者不维护了,所以准备换到Picasso...」
「为什么选择Picasso?」
「听别人都说他好,就用了,还有最近 Facebook 还出了个 Fresco ,好像比 Picasso 要好」
「Fresco 跟 Picasso 比好在哪里?原理有什么不同?」
「这个还没时间研究...」
「那最近在研究什么?」
「最近在研究 Retrofit 」
「有在项目中使用么?」
「恩,用起来很方便,比 OkHttp 方便多了」
「Retrofit 跟 OkHttp 的关系是什么?原理上有什么不同?」
「他们都是 Square 公司开源的,在 Retrofit 上可以使用 OkHttp,不过 Retrofit 是基于注解的」
「Retrofit的注解是编译前还是编译后?」
「看过 Retrofit 的源码么?」
「哦,没有...」(这下聪明了,如果他说看过那我还会接着问下去的,说没有那接下来换个话题)以上的对话是还原了很多面试的真实场景,其中就是想告诉大家两点:1. 我会结合你的项目经验来问你问题,而不是凭空的就问你没做过或者没接触过的领域,如果是你真实脚踏实地做过的项目,不出意外都能答出来;2. 不会或者不擅长的领域不要提,因为大部分面试官会抓住你提到的领域继续深入下去,会就是会,不会就直接说不会,不要企图蒙混过关,这只会减少你的印象分,另外回答的时候如果想要更多的延伸下来体现自己的技术水平,尽量多往你擅长的方向延伸,比如你不懂Freso,那就尽量别主动提,除非面试官主动问你。总之,项目经验这块是大头,如果你是项目的主程,甚至一个人单枪匹马做的这个项目,那么项目中遇到的问题,解决方法以及技术选型,代码出现的问题等你都会很有印象,这些在面试的过程中都会被问到的,如果是真实的项目经历,这部分完全不是问题。7. 其他当然除了根据你的项目经验之外,大部分面试官都会问一些你可能从没基础过的领域,比如问你一些 Service保活、JNI 甚至还会问你一些跟 Android 无关的后端技术,这些你回答不出来不影响大局,毕竟总会有你没接触的领域,这些问题面试官主要是想看下你技术的广度,看下你知识面的广度,答出来了会锦上添花,给你加分,但是答不上,并不会给你减分。除以上之外,还有代码质量与重构、版本控制Git、是否参与产品、自己未来的规划等可能都会涉及,但是这些都不是硬性条件,综合起来,之前这篇文章有介绍 「」,企业最关心的三种能力无外乎「学习能力」、「解决问题的能力」、「团队协作能力」,基础知识体现了你基本的学习能力过不过关,项目经验体现了你解决问题的能力,这个项目如果不是你单枪匹马的话,那么这中间的过程以及版本控制Git的使用等也会体现你的团队协作能力。8. 总结面试中不可能完全把一个人的各方面能力都展现出来,企业和面试官也没有那么慧眼,一眼就认准了你,而且面试本身也是企业跟应聘者互选的过程,不要单方面的当做出售自己一样,你需要做的就是注意细节,打牢基础,脚踏实地的做项目,然后在面试中真实的表达自己就足够了!
关注微信公众号“Android面试无忧”里面有很多经典面试题,我们都是用这个的。
如果是大四了的话,建议可以自己做个app出来,在面试的时候就相当于有了项目经验。另外就是多刷一些网上的笔试题。搜一下android相关的技术博客,都会有一些关于面试考察的重点。记下来,还要啃下来,这样你的面试自然成功率好很多。当然,最重要的准备当时当然是“实战”,多参加各个公司的面试,不过不要紧,重点是积累经验。最后,推荐一个专门做互联网实习招聘的公众号:hlwxz123里面每天都会更新互联网公司的相关实习,很多都android岗位的实习以及互联网公司的面经,可以关注一下。
1、基础皮毛:java(基本知识、多线程)和android(简单的四大组件)2、重要:数据结构与算法!3、加分项:项目经验!1、2点主要是针对大公司...第3点大公司和小公司都通用的。针对第3点,你要让面试官看到你的亮点...面试最常被问到的问题是:“你认为自己最擅长什么??”,面试官也希望看到你的亮点...如果你不清楚自己的亮点,就只能被面试官随意抽问到一些不熟悉的知识点,然后面试就会很容易在你的一脸懵逼中结束了...然后就没有然后了...以上为个人的一点感想...
现在貌似有些晚了啊,计算机专业知识,算法刷编程之美,剑指offer,java主要面试题以及虚拟机相关,安卓要理解深入,牛客网上各面试题要刷,亮点会些前端,会些framework
后面更新一些具体的准备建议,具有比较强的主观性,请结合自身情况辨证性吸收。这是原答案:15年校招季大大小小面试面过不低于30家,总体上来说可以分为两种类型,小公司注重你的实践能力,大公司看中你的综合能力。小公司面试会比较集中安卓开发这一块,比较在意你之前有没有类似的项目经验,有没有遇到过目前他们所遇到的一些问题,准备这类公司面试除了基本的一些知识点还需要关注一些安卓开发实际中经常遇到的一些问题,诸如图片缓存,常见的开源框架,oom问题等等。大公司面试比较在意你的综合能力,无外乎是数据结构与算法,计算机网络,操作系统,Java这。我想说在我列出的这么多考查点中,数据结构与算法是一个分水岭,这个的准备需要一个长时间的积累,真正的高手与一般人一试就知道,屡试不爽,所以很多公司都痴迷于考算法,像是美团,百度,爱奇艺等公司,总共整个面试下来可以让你手写5个算法题以上,我说这么多只想告诉你这是一个门槛,能不能跨过去决定了你最终所找工作的水准,所以我都会建议每一个找程序员相关工作的人,这一块要尽早准备,多刷一些leetcode或是其他类似的题。然后在剩下的几块知识中,我只想说你可以不用全部都懂,但是你必须要在某一块知识点是有深入研究的,能够回答面试官4到5个追加问题,如果所以知识点都只能答上一到两个,面试官会觉得你的水平就是这样了,另外也会觉得你没有探究精神,关于后面一点是很恐怖的没有探究精神做不了好的程序员。如果按照重要程度,面试安卓我觉得可以做一个这样的排序:数据结构与算法,java,安卓,计算机网络,操作系统,后面是数据库或是设计模式之类的。java这一块比较重要的是多线程同步异步,java虚拟机内存回收,容器,面向对象一些知识点。就单单是多线程和虚拟机都可以看好几本专门讲解的书了,其他知识点就多啃啃java编程思想,遇到不懂在多翻翻博客加深理解。安卓这一块,异步机制,view的绘制,自定义控件,四大组件都非常重要。不管是android或是java都最好看一些源码,java可以看一些容器的源码,android可以看handler,looper,message等异步通信的源码或是一些开源框架的源码,会看源码绝对是加分项。计算机网络可以注重看上面几层,传输层注重研究。一般来说,前面这几点掌握好了,足以聊好几轮面试,一般面试官你都可以引导他去聊一些你擅长的知识点。后面几块知识点,你可以先掌握一些比较重要的,不一定每次面试都会遇到,但是也得准备。我只提供一些大概的思路,具体到没一块知识点怎么准备可以自己去搜集,大的方向对了加上好的执行力一般可以取得不错的结果,祝好!更新,加一些具体的准备建议:上面这几块知识点,按照其重要程度排序,我个人认为可以这样排:数据结构与算法,Java,Android(如果不找安卓的就去掉这部分),计算机网络,操作系统,设计模式。下面我就按照这个顺序给出一些准备建议。?
数据结构与算法推荐书籍:大话数据结构,数据结构与算法分析(java语言描述),剑指offer,进军硅谷。推荐在线刷题网站:Leetcode(),Lintcod(),牛客网()推荐方案:主要做三件事。1, 先看一遍大话数据结构,熟悉一些基本概念,大话这本书只讲了一些基本的数据结构,像是B树,B+树,红黑树需要自己看一些博客或是网站,推荐一个讲解算法的网站-七月算法,另外海量数据处理也是一个经常考的专题,它结合了数据结构和操作系统的一些知识,这个需要进行针对性准备。2,然后开始刷题,最推荐的肯定是leetcode,刷题建议按照标签进行刷题(比如队列,栈,哈希表),刷题从易到难,最好能够刷一百题左右,如果一天一题,至少要三个月以上,所以这个耗时比较长,要从比较早开始准备。进军硅谷这本书有按照专题进行编排,基本上的题目来自leetcode,可以作为一个参考。2, 然后要分析一些常见数据结构的源码实现(比如队列,栈,hashmap之类的),数据结构与算法分析这本书有讲一些,可以结合一些博客进行准备。?
Java找程序员工作,大多数情况下需要掌握好一门面向对象的语言,主流上分为Java和C++两大阵营。这里讲Java需要怎么准备。入门书籍:Java核心技术卷一,Head first in java(如果一点面向对象的概念都没有那就看这本)提高书籍:Java编程思想Java虚拟机:深入理解Java虚拟机Java多线程:Java多线程编程核心技术,Java并发编程实践其实我觉得如果有一定基础建议直接看Java编程思想,面试中的考点经常都会在这本书中有讲到。当然Java虚拟机和多线程这两块需要再看一些专门讲解的书,每一次java面试考查内容几乎都离不开这两块。总体来说java考察内容包括以下这些:
1,面向对象的一些基本概念:继承,多态之类的2, 抽象类和接口3, 静态类,内部类4, Java集合类,同步和非同步5, Java类加载机制6, Java内存模型和垃圾回收算法7, 线程同步机制(volatile,synchronized,重入锁,threadlocal),线程间通信(wait,notify)8, 异常处理9, 多线程同步问题,生产者消费者,读者写者,哲学家就餐,用java实现10,
了解java中设计模式的思想,用了哪些设计模式,有什么好处?
Android入门书籍:第一行代码。提高书籍:Android群英传,Android开发艺术探索。上面的书看好了,一般问题不大。主要问的一些问题:1, Activity,Service,BrocastReceiver,Intent,Fragemnet,ContentProvider,这些组件的基础知识,比如Activity两种启动方式,生命周期,四种启动模式,Service则主要是:两种启动方式,生命周期。还有组件之间怎么通信之类的问题。2, Android的数据存储方式,数据库,sd卡,SharedPreferences 这些3, Listview的优化,与scollview的区别4, view状态与重绘,view的绘制过程,view的事件分发机制,view的事件冲突处理5, Android多线程异步机制,AsyncTask工作原理与源码实现,Handler,Message,Looper异步实现机制与源码分析6, Android常见的开源框架(主要是网络通信,图片加载这些),了解怎么使用,分析源码7, Oom和anr异常引发的原因,怎么解决8, 了解一些常见的图片缓存技术?
计算机网络推荐书籍:计算机网络自顶向下,tcp/ip协议详解卷一主要看:主要看应用层,传输层,网络层,其中传输层最为重要。主要的一些考察内容有:1,
TCP和UDP的区别2,
TCP的三次握手,和四次挥手,为什么需要三次握手,为什么要四次挥手(这两个为什么要考虑非常清楚)3,
TCP拥塞控制算法(慢启动,拥塞避免,快速恢复),流量控制算法,滑动窗口协议,选择重传。4,
TCP可靠性是怎么保证的(通过哪些机制保证)?5,
HTTP协议报文格式,请求方法字段以及各个方法之间的区别,了解常见的响应状态码,了解cookie机制,了解WEB缓存技术(条件get方法)。6,
DNS协议的各层域名服务器,两种查询方式(递归和迭代),dns缓存7,
Udp的特点,适用场景,校验机制8,
从输入一个网址到最后网页显示整个过程发生了什么?9,
IP地址组成,ARR,RARP,ICMP协议,路由选择算法
不知道你是不是指的纯技术方面的准备,如果是的话,我就提供一些拙见,大部分算是一些开发知识死角或者tips吧,权当抛砖引玉了:)
下面的回答建立在JAVA基础(看着《JAVA核心技术 vol1》目录能梳理一遍JAVA常见知识点)和Android基础都过关的情况下。一、JAVA SE1、JAVA标准容器
可能受一些网上流传的各种demo的影响,大多数Android开发者最拿手的就是ListView(RecycleView)+BaseAdapter+ArrayList三剑客,但是要知道ArrayList还有两个亲戚,一个是近亲CopyOnWriteArrayList,另外是远房LinkedList、CurrentHashMap。CopyOnWriteArrayList的效率比ArrayList略有下降,空间利用率也下降了很多,但是CopyOnWriteArrayList是线程安全的,CopyOnWriteArrayList和ArrayList对尾的操作都为O(1),但是其他位置的删除,插入操作很增加很大的时间复杂度,涉及到一次内存搬移过程,不过random access效率很高;LinkedList的随即插入和删除性能很高。tips:数组复制,请使用System.arrayCopy或Arrays.copyOf 实现,且在JAVA中后者基于前者实现。2、JAVA并发
1、ThreadPoolExecutor,JAVA并发的核心线程池框架,不过它的构造函数非常复杂:public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue&Runnable& workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
所以有一个方便我们使用的工厂类,Executors,可以创建4种类型的ThreadPool: 固定线程数量的线程池:Executors.newFixedThreadPool(int size);单线程异步队列:Executors.newSingleThreadExecutor();周期性调度:Executors.newSingleThreadScheduledExecutor();多线程周期性调度:Executors.newScheduledThreadPool(1);说到ThreadPoolExecutor的构造函数,它的最后一个参数BlockingQueue&Runnable&来自于包java.util.concurrent,ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue、PriorityBlockingQueue和这个包里面其他的类也要过一遍。workQueue一定要用有界队列!设想一个极端情景,假设每个TaskWork都运行10s(更确切的说,IO等待10s),而ThreadPool在10s内接收到了1000个这样的TaskWork,如果我们使用了无界队列,队列的大小必然会急速增长直至进程Crash,但是如果我们使用了有界队列,假设队列长度为128,当TaskWork超过128,我们会有另外的线程帮忙处理,那系统的负载就可能降下来了。
上面说到了任务池的创建,那里面的任务是什么?从哪儿来呢?里面的任务是FutureTask&T&,构造函数的参数是一个Callable对象,而我们真正的任务就在Callable对象里面的call方法,FuterTask执行实际任务后会在主线程调用done函数,最后通过ExecutorService的submit方法将FutureTask提交到任务池。发一段伪代码: public class SomeCallable implements Callable&String& {
public SomeCallable() {
public String call() throws Exception {
// some heavy work consting amounts of time
return "result";
FutureTask&String& futureTask = new FutureTask&String&(new SomeCallable()) {
protected void done() {
String result = get();
//dosth to result
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.submit(futureTask);
2、一个线程sleep的小坑,我相信很多朋友都写过这样的代码:public void run() {
Thread.sleep(1000);
} catch (InterruptedException ie){
ie.printStackTrace();
但是设想一下,如果我们的线程在执行sleep之前就被interrupt了呢,别以为不可能,ThreadPoolExecutor框架就是通过对所有的Thread进行interrupt来取消所有线程,这是我们上述代码就会抛出异常。所以良好的实践应该是:public void run() {
while (!Thread.currentThread().isInterrupted()) {
Thread.sleep(1000);
} catch (InterruptedException ie){
ie.printStackTrace();
3、会用wait/notify来实现最简单的生产者-消费者模式。
4、ThreadLocal变量的理解/定义。ThreadLocal在Android中的应用,最典型的应用就是在android的messengeQueue-Looper模型中,Handler如何找到当前线程的Looper呢?我们平常直接在UI线程中new Handler()就可以了,里面就是mainLooper,但是Android怎么确定的UIx线程中new Handler()里面是mainLooper呢,答案就是通过将Looper作为ThreadLocal变量。以及ThreadLocal基本的实现原理(在线程对象里面有一个inner static class)。
5、JAVA的heap/stack的理解,可能会和多线程一起考察,
6、ConcurrentHashMap的实现,
7、 JAVA的Reflection,Android内部很多东西都是基于Reflection实现,比如我们经常用的属性动画,就是通过属性名称找到属性的getter方法名,进而通过反射调用。不过对于日常开发的话,Reflection有两个作用,一是在一些情形下(特别是对属性的操作,包括更改、比较,比如我们可以定义一个通用的Collections.sort)可以提高代码复用度,二是可以做一些比较hack的事情,比如使用一些internal class,内部的AIDL等,修改一些internal类的static value。二、Android
1、预防内存泄漏!擅用WeakReference&T&!
所有从类外部传来的对象(特别对于Context,View,Fragmet,Activity对象),如果要将其放进类内部的容器对象或者静态类中引用,请一直用WeakReference包装!比如在TabLayout的源码中,在TabLayoutOnPageChangeListener中,就为TabLayout做了WeakReference wrap。
2、Android IPC,Binder的理解,理解Binder的引用和实体,知道所谓的客户端和服务端分别代表什么意思,懂得ServiceManger对每个Service注册和根据服务名来getService的基本原理,这些没多少坑,但是非常庞杂,建议阅读《深入理解Android vol1》Chapter 6,。会写AIDL,会用Messenger夸进程传递信息,具体的实践:。
3、Activity的简要绘制(创建)过程 ,Activity本质是为了Window(PhoneWindow)服务,onAttach:建立mwindow对象-&setContentView:创建DecorView,在DecorView中根据Activity的风格来 创建Title(ActionBar),TitleContent(ActionBar下面的内容,内部资源id为android:id="@android:id/content")-&mWindow.addView(mDecorView),将创建好的DecorView添加进window,addview时创建一个RootView,也就是我们的R.layout.activity_main的母布局,然后对子控件递归遍历发送绘图消息,子控件收到消息后 执行onMeasure-&onLayout-&onDraw,这时,我们就可以得到各控件的尺寸信息。
4、 在onCreate中获得视图的尺寸信息,注意到我们上面说,母控件通过遍历向子控件发送dispatchView信息来使子控件绘图,当然,我们也可以在(setContentView)这之后在子控件上post一个Runnable到控件的runnable队列中去,在其中自然可以获得正确的尺寸。
5、关于View的点点滴滴。基础:自定义单一View,换句话说,叫自定义UI,就是仅仅在OnDraw里面做了文章,比如仪表盘,圆形头像,自定义属性-&中级:自定义View与其他系统Wdiget协同工作,比如继承LinearLayout写一个自定义的TabLayout来与ViewPager协同工作,处理事件(滑动、点击、屏幕手势)分发,处理滑动事件冲突,这个阶段才可以被称之为自定义Widget-&进阶:突破Activity,直接向Window添加、删除、更新View,理解WindowManager仅仅是个引用,真正的工作在WindowManagerService里面完成。 6、图片加载框架,熟悉并实践过基本的缓存算法LruCache、DiskLruCache,对Bitmap重采样以降低OOM的几率,熟读一款中规中矩的图片加载框架如Universal Image Loader的源码,并能将各种策略总结。
7、SurfaceView的实践,SurfaceView最常见的一个使用情境是在我们的界面之上绘制各种动画,但是有一个问题,在布局发生改变时,SurfaceView会出现部分屏幕变黑的情况,包括但不限于在ViewPager、DrawerActivity中使用SurfaceView,需要知道这个问题的解决方案。
7、熟练使用ContentProvider,并懂得大概原理(很惭愧,我对Provider没做过深入理解)
8、Activity的几种FLAG和LauchMode分别代表的意义,以及使用场景。
9、知道65535 dex-merge问题是怎么回事
10、熟悉使用Android开发者选项功能,比如最常用的 布局边界显示、过度绘制检测、UI绘制速度检测、Surface更新时闪烁、严格模式、CPU利用率展示、不保持Activity。三、拓展(上面这些都真正透了,就没有大的漏洞了)
1、事件流编程,EventBus、RxJava。
2、Kotlin语言。
3、DataBinding,Google的这个MVVM框架实现的很完全,很强大,包括像Angular中自定义directive/filter的类似feature。
4、知道Volley,okHttp他们的应用场景。
5、熟悉一些ORM,包括现在新出的非基于SqlLite的数据库:Realm,
6、Android对Vector Icon的支持
7、Android L新特性,Palette、CoordinatorLayout自定义Behavior等
你好题主,我是刚找到工作的学生。最近面试了几家公司,找过实习,就我的经验,给你几点建议:1,准备基础知识,算法,数据结构,操作系统,网络
你可以去牛课网去做相关的练习题,看相关的帖子
剑指Offer这个很不错,算法的
稍微大点的公司实习的话,会很看重基础知识的掌握(答主就是败给算法了,我当时把安卓社会招聘的题目都做完了,最后还是没要我)。2,准备的java知识,题主应该清楚,Android是用java开发的,所以java方面的知识的补充也很重要,包括线程,集合,模式等。3,安卓方面的话,如果是实习的话,我感觉大公司不是很看重,我记得有的公司甚至会招收一些完全没有从事过安卓学习的人。4,作为实习生的话,公司会考察你的学习能力,分析问题的能力,所以题主在面试的时候一定要听清楚问题,仔细思考后再作答。5,还有就是多面试啦!实践才能出经验啊,光说说是没用的。希望能帮助到题主。
多面几次就晓得差什么了,一边面一边总结自己的知识盲点!
已有帐号?
无法登录?
社交帐号登录}