您的位置首页>硬件>

Android工程师的面试经验分享

导读大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Android工程师的面试经验分享问题。我想和大家分享一下我在求职过程中经历的一件小

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解Android工程师的面试经验分享问题。

我想和大家分享一下我在求职过程中经历的一件小事,也许其中有一些可以借鉴。我知道有很多和我一样刚毕业的学生,对Android开发有一些基本的了解。他们可能现在很迷茫,也可能现在不自信。当然,他们可能会有更多的担忧。造成这一切的根本原因可能是缺乏安卓知识和有限的项目经验。但是不要担心,只要我们继续前进,一切都会变得更好。

我的背景。

我是2016年毕业的学生。我的专业是信息管理和信息系统。大三的时候也是自己学了一点安卓的基础知识,大四的时候在一家互联网公司实习。我觉得大部分和我差不多,大概技术水平也差不多。当然,初中会用VB的学生在此排除。

互联网公司

在求职过程中,我收到的面试邀请有60%来自培训机构,这大概是因为我的应届毕业生标签和简历上的描述缺乏专业性。20%是外包公司,其余20%是纯互联网公司。在这种情况下,你可能会拒绝去培训机构面试,拒绝去外包公司面试,直接去纯互联网公司面试。这样做是不明智的,只要是面试,你就去。

以下是我面试过程和面试问题的总结。这些面试问题可能在每个公司都不尽相同,但对于我们这些面试经验较少、技术水平有限的人来说,可能有一定的借鉴意义。

人力资源面试

自我介绍

你了解过我们公司吗?

说说你的优点。

请简单介绍一下你做过的项目。

你在这个项目中具体负责什么?

你为什么离开?

为什么选择安卓开发而不是IOS开发?

当问题出现时,你如何解决?

……

技术方面

1.项目级别1。

这里有三种技术项目层:1。公司已经是A轮以上的公司或者产品接近成熟,更倾向于问你具体项目;2.公司由天使轮投资,倾向于从他们的一款产品入手;3.外包公司往往看你做多少项目;

所以你在接到面试通知的时候,首先要观察公司的性质,然后找到相应的侧重点。比如我在这里采访了一家天使轮公司,我在官网上下载了产品,然后从App的导购页面到登录页面再到首页,逐步分析每一个页面。然后,对其中涉及的知识点进行统一提取和归纳。最后,我们熟悉并掌握这些知识点。

举个例子:X产品是一款基于社区的App,支持微信登录、分享、收藏、支付等。然后我们从这些简单的事情中挖掘出知识点。如下图所示:

微信如何登录、分享、收藏、支付?

这里常见的回答是直接进入微信开发平台,然后下载相应的SDK,参考相应的技术文档,一步步实现。这个答案虽然没什么好挑剔的,但也没有什么亮点。X产品登录第三方的内在逻辑是什么?微信上是不是先有认证流程,然后认证成功后,唤醒X产品中的一个界面,然后下一步操作是什么?具体到整个操作的详细逻辑。

上传、压缩、剪切和缓存图片。

因为社区类型的x产品展示了很多图片。所以处理图片总是有必要的,所以我在这里总结一下与图片相关的基本知识点。

内存优化(参考《Android开发艺术探索》)

众所周知,每个App都需要进行相应的优化。尤其是对于那些界面丰富的产品,在这个问题上,我。

dent: 2em;">们可以从以下几个方面阐述内存优化。

1.布局优化 方法:减少布局资源文件的层级;因为层级少了,Android绘制的工作量也就少了。可以采用相应的标签;

2.不要在onDraw()方法里面创建对象和执行耗时操作,因为onDraw()被频繁调用;

3.内存泄漏优化 方法:静态变量导致Activity无法正常销毁;属性动画导致内存泄漏;当播放动画的时候没有进行停止,这样在Activity销毁的时候就无法对Activity进行回收。

4.ListView与Bitmap优化;

5.线程优化 方法:采用线程池的形式这样可以避免大量线程的产生,同时在线程池里面可以对线程进行重用,并且线程池里面可以控制线程的最大并发数。这样的话避免了一定的系统开销同时也可以避免大量的线程因抢夺资源而阻塞;

6.其它优化 方法:比如避免创建过多的对象;常量使用static final 来修饰;采用内存缓存与磁盘缓存等等;

文件存储

这一点基本算是基础知识点了,我们除了要掌握那几种存储方式还要知道它们具体的在什么情况下用?怎么用?用的时候注意什么?并且能够熟练的使用数据库,如果能够写出一些较为一点难度的SQL语句,比如子查询、多表查询等那就更好了。可能这里有的公司会直接给你几个关于SQL语句的测试题。

框架

现在一些网络请求框架、数据解析框架、数据库存储框架这也是可能要问到的问题。X产品在请求网络数据的时候若用到一些框架时那很可能是比较流行的Volley、OkHttp、Retrofit等,所以我们在这里要做好准备,比如我用过Volley,那么肯定熟悉Volley的优缺点,除了这一点外,我们还要比较这三者之间的区别,并且要熟悉它底层是具体怎么做的。

其它

刚开发出来的产品不可能是完美的,所以你就尽可能的去发现其中的不足,越是明显不足的地反就越说明是这家公司薄弱的地方,那么在面试的时候提出关于这方面的问题概率就很大。随便举个例子,比如X产品对Activity的启动模式表现出来的逻辑有点不友好,那么你发现后就得自己清楚的去熟悉Android的四种启动模式。细节很重要,多去寻找总会有收获。

2.基础层1

基础层上面的话会问一些关于Java的知识点,同时也包括Android的基础知识点。这里我就不一一列举了,Java的话还是要注重在线程上,包括同步、异步等等。当然还可能问到关于集合方面的知识,常见的是ArrayList与LinkedList之间有什么区别?而关于Android方面的话基础知识也就是四大组件、数据传递、消息机制、设计模式这些了。

CEO面

关于CEO面试的话这里就不涉及到技术了,但是在这个环节我们要展示我们积极向上的心态以及勤奋好学充满激情。CEO或者是创始人最愿意跟你聊的是互联网行业,什么O2O,B2C…。这些我也是晕了。可能在这一点上他是在考察你是否对互联网这个行业关注。还有问你你怎么看待这款互联网产品在大众面前这么流行的?在这个时候你就要去找到这个产品的特点并顺着这个特点一直说下去然后发表你自己的看法最后基本上没什么问题的了。我自己觉得在这一层面试上我们要尽量多发表自己的看法,表达出自己的热情,这样就可以证明我们在某个问题上是独立思考并且有主见的。

结语

这也是自己面试大概5次得出来的一个想法,一点经验,分享给大家。如果能帮助到你最好了,同时在找工作的时候没有资金来源的我们会非常没有安全感,特别是自己一个人在大城市的时候。但是大家不要灰心,也不要心冷,要充满自信。我们可以在一次一次的面试中成长这也是一件非常愉快的事情。如果在面试的时候的发现自己哪个知识点不熟悉的话回来后要立刻熟悉,立刻实战,最后共勉。

我想把自己所经历的求职这一点小事分享给大家,或许其中有些东西可以借鉴。我知道有很多跟我一样刚毕业并且有一些Android开发基础知识的同学,他们可能现在困惑,也可能现在不自信,当然可能还有更多的着急。这一切的根本原因可能在于自己掌握的Android知识点少,项目经验有限。然而不用担心,一切只会变好,只要我们向前。

我的背景

我是2016届毕业的学生,我的专业是信息管理与信息系统。在大三的时候也是自己学了一点Android基础知识并且在大四的时候在某个互联网公司实习过,我想大部分人都与我差不多,都可能是同一个技术水平。当然这里排除那些在初中就会用VB的同学了。

互联网公司

在我求职的过程中,收到的面试邀请通知60%是培训机构,这个原因很可能是自己应届生的标签加上简历上的描述不够专业。20%是外包公司,剩下的20%就是纯互联网公司了。在这样的一个情况下,你可能拒绝去培训机构面试,拒绝去外包公司面试,而直接去纯互联网公司面试,这样做是不明智的,只要是面试你就去。

下面是我的一个关于面试流程以及面试问题的总结,这些面试问题不可能每个公司都是这样的,但是对于我们这些面试经验少同时技术水平有限的人来说或许会有一些借鉴意义。

HR面试

自我介绍

你了解过我们公司吗

说说你的优势

请简单介绍一下你所做的项目

在这个项目里面你具体负责哪些内容

你为什么离职

你为什么选择Android开发而不是IOS开发

当出现一个问题时你是怎样解决的

……

技术面

1.项目层1

技术面项目层这里要分三种:1.公司已经是A轮以上的公司或产品接近成熟了的更倾向于问你具体做的项目; 2.公司是天使轮投资的公司更倾向于从他们的一个产品出发;3.外包公司比较倾向于看你做的项目的多少了;

所以自己在接到面试通知的时候,要首先观察公司的性质,然后再去找相应的侧重点。比如,在这里我面试的是一家天使轮的公司,我在官网上把产品下载下来了,然后逐渐从App的引导页到登录页再到主页逐渐各个页面进行分析。紧接着把它其中所涉及的知识点进行抽离出来,并统一归纳。最后就是对这些知识点进行熟悉与掌握了。

比如我们举个例子:X产品是一个以社区为主的App,并且它支持微信登录、分享、收藏、支付等。然后我们就从这些简单的东西中挖掘出知识点。如下所示:

微信登录、分享、收藏、支付是怎么做的?

在这里普遍人的回答是直接进入微信开发平台然后下载相应的SDK并参考相应的技术文档一步一步进行实现。这样回答的话虽然没什么可挑剔的,但是没有突出亮点,在这里应该围绕着X产品在进行第三方登录时其内部的逻辑是什么样的?是不是先有一个在微信上的认证过程,然后认证成功后,在X产品中唤醒某个界面然后接下来又是什么操作?要具体到整个操作的细节逻辑。

图片上传、压缩、裁剪、缓存处理

因为社区类型的X产品展示了大量的图片。所以说对图片进行处理肯定是经常要遇到的,所以在这里自己就要去总结与图片相关的基础知识点了。

内存优化(参考《Android开发艺术探索》)

众所周知,每一个App都需要进行相应的优化。特别是对于那些界面非常丰富的产品了,在这个问题上我

们可以从以下几个方面阐述内存优化。

1.布局优化 方法:减少布局资源文件的层级;因为层级少了,Android绘制的工作量也就少了。可以采用相应的标签;

2.不要在onDraw()方法里面创建对象和执行耗时操作,因为onDraw()被频繁调用;

3.内存泄漏优化 方法:静态变量导致Activity无法正常销毁;属性动画导致内存泄漏;当播放动画的时候没有进行停止,这样在Activity销毁的时候就无法对Activity进行回收。

4.ListView与Bitmap优化;

5.线程优化 方法:采用线程池的形式这样可以避免大量线程的产生,同时在线程池里面可以对线程进行重用,并且线程池里面可以控制线程的最大并发数。这样的话避免了一定的系统开销同时也可以避免大量的线程因抢夺资源而阻塞;

6.其它优化 方法:比如避免创建过多的对象;常量使用static final 来修饰;采用内存缓存与磁盘缓存等等;

文件存储

这一点基本算是基础知识点了,我们除了要掌握那几种存储方式还要知道它们具体的在什么情况下用?怎么用?用的时候注意什么?并且能够熟练的使用数据库,如果能够写出一些较为一点难度的SQL语句,比如子查询、多表查询等那就更好了。可能这里有的公司会直接给你几个关于SQL语句的测试题。

框架

现在一些网络请求框架、数据解析框架、数据库存储框架这也是可能要问到的问题。X产品在请求网络数据的时候若用到一些框架时那很可能是比较流行的Volley、OkHttp、Retrofit等,所以我们在这里要做好准备,比如我用过Volley,那么肯定熟悉Volley的优缺点,除了这一点外,我们还要比较这三者之间的区别,并且要熟悉它底层是具体怎么做的。

其它

刚开发出来的产品不可能是完美的,所以你就尽可能的去发现其中的不足,越是明显不足的地反就越说明是这家公司薄弱的地方,那么在面试的时候提出关于这方面的问题概率就很大。随便举个例子,比如X产品对Activity的启动模式表现出来的逻辑有点不友好,那么你发现后就得自己清楚的去熟悉Android的四种启动模式。细节很重要,多去寻找总会有收获。

2.基础层1

基础层上面的话会问一些关于Java的知识点,同时也包括Android的基础知识点。这里我就不一一列举了,Java的话还是要注重在线程上,包括同步、异步等等。当然还可能问到关于集合方面的知识,常见的是ArrayList与LinkedList之间有什么区别?而关于Android方面的话基础知识也就是四大组件、数据传递、消息机制、设计模式这些了。

CEO面

关于CEO面试的话这里就不涉及到技术了,但是在这个环节我们要展示我们积极向上的心态以及勤奋好学充满激情。CEO或者是创始人最愿意跟你聊的是互联网行业,什么O2O,B2C…。这些我也是晕了。可能在这一点上他是在考察你是否对互联网这个行业关注。还有问你你怎么看待这款互联网产品在大众面前这么流行的?在这个时候你就要去找到这个产品的特点并顺着这个特点一直说下去然后发表你自己的看法最后基本上没什么问题的了。我自己觉得在这一层面试上我们要尽量多发表自己的看法,表达出自己的热情,这样就可以证明我们在某个问题上是独立思考并且有主见的。

结语

这也是自己面试大概5次得出来的一个想法,一点经验,分享给大家。如果能帮助到你最好了,同时在找工作的时候没有资金来源的我们会非常没有安全感,特别是自己一个人在大城市的时候。但是大家不要灰心,也不要心冷,要充满自信。我们可以在一次一次的面试中成长这也是一件非常愉快的事情。如果在面试的时候的发现自己哪个知识点不熟悉的话回来后要立刻熟悉,立刻实战,最后共勉。

.dfma { position: relative; width: 1000px; margin: 0 auto; } .dfma a::after { position: absolute; left: 0; bottom: 0; width: 30px; line-height: 1.4; text-align: center; background-color: rgba(0, 0, 0, .5); color: #fff; font-size: 12px; content:"广告"; } .dfma img { display: block; }
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。