7月13号贝贝网Android实习生面试心得

2017年7月13号早上10:33分有幸接到杭州贝贝网的Android实习生的面试电话,面试了46分钟。接下来讲一讲面试过程中遇到的问题哈


面试官是一个小哥哥,听声音应该是25/26岁左右,刚开始还是让我自我介绍

我:“我叫XX,就读于XXXX大学,现在大三,是大二的时候在学校的互联网实验室接触的Android,目前Android开发一年多了。”

唉,很羞愧,自我介绍不超过10秒钟,场面一度陷入尴尬之中,听说优秀的自我介绍一般控制在2分钟左右

1:

面试官:”你的简历上写着你们用的是MVP框架,你对MVP这个框架是怎么了解的呢?’

我:“巴拉巴拉说了一大推。”

2:

面试官:“你使用过图片加载器吗?”

我:“我们项目用到的图片比较少,所以没有具体写一个工具类来加载图片,一般是哪里需要加载图片哪里就自己写一个方法”

注:图片加载器的框架一般有UniversalImageLoader,Picasso,Glide,Fresco。具体的读者可以看这篇文章【Android图片加载利器之Picasso基本用法】

也可以参考这篇文章【Android开源框架之图片加载器ImageLoad的用法】

3:

面试官:“说一说什么情况下会遇到内存泄露。”

注意:这里指的的内存泄露,不会内存溢出

我:“图片加载到内存不回收会导致内存溢出。”

面试官:“你说的这个是内存溢出,不是内存泄露哦。”

我:“我弄错了,内存泄露一般是使用了对象之后,没有回收内存,导致内存泄露。还有就是使用了例如HashMap这种类型的数据,会极大消耗内存,当然如果使用完之后没有回收内存,也会导致内存泄露,我记的java 提出了ArrayMap,和SparseArray【SparseArray貌似是Android提出的,稀疏矩阵】是用来优化HashMap的,内存泄露就是使用了内存带但是内释放掉内存,当内存泄露到一定程度之后就会引起内存溢出。”

我记的以前和同学讨论过内存泄露和内存溢出的区别

想看Android内存优化的读者可以看这篇文章【Android内存优化之OOM】,这篇文章会涉及到 java 虚拟机的知识

想了解内存泄露和内存溢出的区别的读者可以看这篇文章【内存溢出(Memory Overflow)和内存泄露(Memory Leak)的区别】


4:

面试官:“简述一下Android里面的动画。”

我:"帧动画,Tween,Alpha,我记得有Android一种动画效果的在规定空间内通过改变点(x,y)的坐标进行缩放,移动,旋转但是只能在规定的空间内变化。还有一种是虽然规 定的一定的空间,但是可以在规定空间之外的空间进行移动和缩放,旋转。”

面试官:“除了这些动画,还有其他动画吗?”

我:“我目前了解的只有这些,您能说一说其他动画吗?”

面试官:“还有属性动画你没说到。”

我:“这个之前确实没了解过。”

注:反正我没有说到属性动画,关于属性动画大家可以看这篇文章【Android 属性动画(Property Animation) 完全解析 (上)】,这是鸿祥大神的文章

关于Android动画的分类,大家可以看这篇文章【android 动画分类】


5:

面试官:”说一说你们的项目中用到了Android哪些组件。“

我:“Activity,Service,内容提供器,广播,Notification等。”


6:

面试官:”Service和Thread有哪一些区别?“

我:“我感觉service和线程没多大区别,至少我现在是这么认为的,因为出现我们项目中出现ANR【Application Not Response】问题,就是APP打开之后没响应,出现空白界面,因为我没有负责这个模块,所以service和线程的区别我不是很了解。”

后来网上查了一下,发现service和线程还是有很大的区别的,读者可以看这篇文章【android-Service和Thread的区别】

也可以看这篇文章【Service和Thread的关系】


7:

面试官:”你接触过哪些设计模式?你的项目中用到了哪些设计模式?“

我:”单例模式和工程模式。“

面试官:”讲一讲你对工厂模式的理解。“

我:“举个例吧,假如你是一个商家,要去和工厂老板说你需要哪一些产品,但是你不需要知道这些产品具体是怎么生产的,不需要知道生产流程,老板会把你的消息下发到工厂的各个区间,此时区间里面的工人肯定知道这个产品具体怎么生产,规格什么的肯定全部知道了,这就是工厂模式。”

面试官:”你项目中在哪用到了工厂模式?比如你项目中用到Dialog吗?‘

我:”用过。“

面试官:”说一说Dialog的具体实现。“

我:”通过Builder调用一个方法来创建一个对话框,但是Builder不是工厂模式,我前段时间看过一本设计模式的书,上面说Builder是另一种模式【是构建器模式】

8:

面试官:“项目中使用了哪一些View?"

我:”比较常用的是ListView。“

面试官:”ListView里面要是加载其他View呢?怎么处理?“

我:”ListView里面嵌套其他View时要注意点击事件的焦点问题。“

面试官:”ListView里面嵌套其他View时,此时控件的id你们怎么区分的?“

我:”您说得这个我不怎么理解,不过我们是这样处理的,我们使用了适配器,把ListView里面的数据直接放到Adapter里面,在适配器里面进行处理,针对您说的id区分,我们在适配器的getView方法里面加载ListView的布局文件,在xml文件里面我们是知道每个控件的id的,在getView方法里面在家布局之后我们直接绑定id,不需要区分id了。“

面试官:”你刚刚说到适配器,说一说重写适配器需要重写几个方法。“

我:”具体那几个方法我不怎么记得了,我大概记得是这一些:getView方法,getCount方法,getItemId方法 。“ 【貌似还有一个getItem方法,不过当时没想起来】

问了几个大神,他说有时候要重写getItemTypeCount方法和getItemType方法;还有的说:“ID就是在你的适配器Viewhodler这个类里面定义,在getView方法里面进行ID赋值或者区分tag

面试官:”通常适配器里面会使用缓存,为什么会使用缓存?“

我:”其实使用缓存是为了快速加载数据,比如你有100条数据,但是屏幕一次只能加载10条数据,第一次你加载了1--10条数据,当你向下滑动屏幕时,会加载11--2条数据,此时你再向上滑动屏幕时,因为我们采用了缓存技术,就不需要重新把1--10条数据重新加载内存里面,因为缓存的话它会在内存里面再划分出一个区域来存储我们加载过的数据,所以减少了数据重新加载到内存的时间,使用户感到很流畅,一般缓存会使用LRU(最近最久未使用)算法。

面试官:“在适配器类里面怎么时候使用缓存呢?”

我:“一般我们使再适配器类里面再生成一个内部类ViewHolder,再这个类里面把我们需要缓存的数据的属性生命一下,再适配器这个外部类里面直接使用ViewHolder就可ui了。”


9:

面试官:“了解Activity的生命周期吗?”

我:“了解。”

面试官:“说一说Activity的生命周期吧。”

我:“创建(onCreate),启动(onStart),显示(onResume),暂停(onPause),停止(onStop),销毁(onDestory)。不多onStart我们一般的项目中用得比较少”


面试官:“问得也差不多了,你有什么问题吗?”

我:“我想问一下贵公司得实习生得薪资和待遇如何?”

面试官:“这个实习生和正式员工的话待遇肯定是不一样得,具体得还要看HR。“

我:”上班时间是怎样安排的呢?是不是996呢?“

面试官:”上班时间的话是早上9点,晚上一般是看你自己得工作完成情况了,如果全部完成了可以早一点回去,如果没完成的话一般会加班到8点钟左右,周末双休肯定是有的。”

之后就是一些寒暄的话语了.......

总结一下吧:首先自己的自我介绍不超过10秒钟,这是比较尴尬的,希望在以后的面试中改进。其次就是基础了,感觉无论如何,要把基础打好,其次就是项目经验太少,一些Android得知识没有用到,比如图片加载器这一些。后面就是我问面试官得这个问题了,对于我来说,问加班时间知识随口问问,顺便了解一下这家公司得上班时间,互联网公司怎么可能不会加班呢。其实我个人觉得不管是小企业还是大企业,刚开始工作得前几年,加班肯定是少不了了,毕竟加班的话一边可以让你积累经验,一边也可以让你更加深刻得认识到这个行业得情况,不过加班之余还是要多多注意身体健康。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值