经朋友推荐,昨天下午去网易杭州公司参加了考拉海淘android客户端的面试。今天回忆一下面试题目,做个整理进行备案。

1、说说JVM垃圾回收机制。

1.1、画了JVM分代回收的图,大致说了下垃圾分代回收的机制,并且说了年轻代和年老代GC的算法分别是“停止-复制”法和“标记-整理”法。

1.2、这时面试官问我年轻代中survivor0和survivor1之间的复制是如何进行的?我说当survivor0区域也满了的时候,仍然存活下来的对象直接复制到survivor1中,这个答案他并不满意,不过我也说不出具体复制的策略,所以这个问题翻篇了。

1.3、面试官又问我你觉得这三个内存区里哪几个可能会发生内存溢出?我说方法区不可能,年老代会发生内存溢出。他反问我年轻代不会发生内存溢出吗?我急忙说也会。。。其实仔细想想三个区都有可能发生内存溢出。

1.4、方法区中的static变量什么时候分配内存什么时候被回收?分配是在类加载的时候,回收是在该类的Class对象被回收了,static变量才会被回收,因为static变量始终会有一个Class 对象的句柄指向它,static变量是属于类级别的。

参考资料。

2、让我选自己做过的项目中的一个,问我这个项目涉及到哪些安卓相关技术?

我选了自己最有把握的一个,说涉及到的安卓相关技术有Activity.....没说完,他就让我说一下Activity的生命周期,我画了个完整的Activity生命周期图。他问我如果一个位于前台的Activity,执行finish方法,会触发哪些生命周期的方法?我说OnPause()->OnStop()->OnDestory()。然后他让我再说一下Activity的启动模式。。对于singleInstance这种启动模式我没解释清楚,其实也是没有理解。

参考资料。

3、遇到过ANR吗?

Android not responding。我说在主线程中进行比较耗时的操作会造成ANR,比如网络请求和数据库操作等耗时的操作,给用户一种界面假死的错觉。如何解决ANR?将耗时的操作放在子线程中执行,通过handler来实现主线程和子线程的通讯,比如对UI界面进行刷新。

4、安卓网络请求的方式?

主要有两个类来完成,一个是HttpURLConnection,另一个是HttpClient。他问我我这个项目中的网络请求是怎么实现的?我说通过开启一个子线程来完成网络请求操作,用HttpClient来执行HttpPost对象以实现http post请求,当服务器端成功返回数据后,将返回的json格式的数据封装成json类,然后用主线程的handler执行sendMessage(Message msg)方法,主线程中handler执行handleMessage(Message msg)方法对json类进行处理。另一个面试官问到handler是在哪个线程中执行的?我回答道是主线程。他又说handler可能导致内存泄漏,你如何解决?我说道可以在Activity的OnDestory()方法中加入handler.removecallbacks(Runnable Thread)来结束线程。

5、多线程并发问题,如何实现同时从服务器端下载20张图片(不用异步下载的框架,就用handler实现)?

1、第一种方法效率比较低:开启20个下载图片的线程,每个线程下载完毕后用,创建一个Message msg = handler.obtainMessage(id,bitmap)(hanlder为主线程的中定义的handler),然后handler.sendMessage(msg);主线程中handler.handleMessage(Message msg)根据msg的id,将bitmap赋予对应的imageView;

2、显然第一种方法虽然实现了线程并发,但要开启20个线程,显然占用很大的系统资源和内存,容易出现OOM。下面说一下一个带有下载功能的缓存框架的实现思路:

2.1、将url和imageView封装成一个类叫做ImageRef.

2.2、定义一个图片加载栈mImageStack,一个请求更新UI的队列mImageQueue.

2.3、下载20个图片,可以用一个循环依次将20个封装好的ImageRef对象加入到mImageStack中.

2.4、定义一个加载图片的handler,实现图片下载。

2.5、如果handler为空,则创建一个HanlderThread,并将其Looper给予handler,由handler来负责处理Looper从该线程中抽取的Message。

2.6、从mImageStack中pop一个imageRef,handler.sendMessage(new Message(id,imageRef)),handler.handleMessage(Msg)在handler线程中下载图片,下载得到bitmap后,由ui线程的handler,取名为handler2发送封装了bitmap的message.并且将用来标记图片加载线程是否可用的isLoading设置为false,表示图片加载线程不可用。

2.7、在handler2.handleMessage(Message msg)中从mImageQueue中取出对头元素imageRef,然后更新其中的mageView,并将isLoading设置为ture.

2.8、重复第6步。

6、项目中有没有自定义的view?

我说了两个,一个是首页的瀑布流效果的scrollView,是由左右两个LinearLayout实现的;还有一个是流布局FlowLayout,这个view其中有一个面试官问我是继承自哪个类的,我说是LinearLayout,他说应该是ViewGroup。回来一看还果真是ViewGroup,确实牛。。。

7、知道的设计模式有哪些?

有两类,一类是创建者模式,还有一类是结构型模式。创建者模式:多个方法工厂模式、静态方法工厂模式、抽象方法工厂模式、单例模式、原型模式;结构型模式:装饰器模式、适配器模式和代理模式。然后他问我知道观察者模式吗?这个。。。我知道在ContentProvider中的运用,并不知道其实现原理。然后起身走开,让我单独写一下观察者模式的结构。。。

详情点击。

安卓中的设计模式。

转载于:https://www.cnblogs.com/hzhtracy/p/4667100.html

2015年网易考拉海淘android面试相关推荐

  1. 最具中产气质的“网易考拉”,离“中国版Costco”还有多远?

    螳螂财经|木宇 吴晓波有一次在参加<锵锵三人行>的时候说道,自己见过的大富豪中几乎没有一个是真正快乐的,在窦文涛追问之下,想了想之后又补充道,"哦,是有一个,丁磊." ...

  2. 快播CEO王欣出狱;1号单车宣布停运;网易考拉聚美等海淘商品涉假 丨价值早报

    第[857]期早报由[周四]赞助播出 01 今日头条 知情人称快播创始人王欣已经于昨日出狱 据<创业家>昨日(2月7日)报道,从知情人士处得到消息,快播创始人王欣已于昨天出狱. 该知情人士 ...

  3. 小米应用商店:网易考拉2016海淘APP下载量第一

    2月24日, 小米MIUI对外公布<小米应用商店2016年报告>指出,从应用商店里程碑数据.行业动态和开发者相关数据来看,海淘市场正在快速崛起,网易考拉海购问鼎海淘行业.在海淘类应用下载量 ...

  4. 前有阿里巴巴,后有拼多多,网易考拉要去哪儿?

    黑客技术 点击右侧关注,了解黑客的世界! Java开发进阶 点击右侧关注,掌握进阶之路! Python开发 点击右侧关注,探讨技术话题! 来源丨差评 https://mp.weixin.qq.com/ ...

  5. 网易考拉没有了,网易严选还会远吗?

    文|陈曦 来源 | 螳螂财经(ID:TanglangFin) 时隔两个月,丁磊又直播带货了. 8月15日,丁磊在抖音第二次为网易旗下电商平台严选带货,这次丁磊选择的搭档是大热综艺节目<乘风破浪的 ...

  6. 小红书竞品分析_跨境电商APP竞品分析:小红书、网易考拉和达令

    本文作者选取跨境电商中发展较为不错的三款APP(红书.网易考拉和达令APP)进行了分析,指出了各自的不足,且提出了自己的建议.作为彼此的竞品,三款软件的侧重点不同,值得一阅. 入选条件 小红书海外购物 ...

  7. 网易考拉海购更名网易考拉 全面进军综合电商市场

    近日,国内领先的跨境进口零售电商平台网易考拉海购宣布更名为"网易考拉",正式宣告进军综合电商市场.与品牌更名同步,"网易考拉"全新的 品牌标识及全新Slogan ...

  8. 华为麒麟990芯片发布;谷歌宣布开源创新隐私保护技术;阿里20亿美元全资收购网易考拉;中国联通将设立100亿5G创新基金……...

    关注并标星星CSDN云计算 极客头条:速递.最新.绝对有料.这里有企业新动.这里有业界要闻,打起十二分精神,紧跟fashion你可以的! 每周三次,打卡即read 更快.更全了解泛云圈精彩news g ...

  9. 有钱就是任性!阿里20亿美元拿下网易考拉:欢迎加入阿里动物园

    杭州作为中国电商的"福地",聚集了多家头部电商企业以及心怀梦想的淘宝店主.就在今天,作为跨境电商的老大和老二,阿里和网易考拉正式宣布"在一起".虽然,这中间经历 ...

最新文章

  1. Asp.net Mvc Post ID Bug
  2. flutter识别html标签,Flutter:获取HTML页面的某些元素
  3. 如何使用python批量压缩图片_Python实现批量压缩图片
  4. hadoop hdfs访问权限更新延迟问题
  5. 【第五组】头脑风暴+核心竞争力+NABCD+个人(用例+功能+技术说明书) 最后修改时间 2017.07.13...
  6. noi.ac #543 商店
  7. 计算机维修基本题,计算机组装与维护试题库附答案.doc
  8. lucene的基础入门
  9. .fit文件读取--head信息--修改head--读取csv文件-------ska暑期训练
  10. 基于MATLAB的疲劳检测
  11. Windows 使用 Detours 进行 HOOK
  12. 磁盘分区误删怎样恢复?
  13. Android刷机简明教程
  14. 机器学习:数据归一化(Scaler)
  15. 片上总线学习之Wishbone
  16. c语言小白能自学吗,零基础小白学编程,该如何入门?
  17. “白发”位置竟暗示五脏六腑健康状况
  18. 《应对焦虑》学习总结
  19. 【我的读书】《薛兆丰经济学讲义》助你变得更理性、悦纳和进取
  20. python自动化客户端_如何使用Python自动化登录客户端,pywinauto确实很强大

热门文章

  1. js 大数字单位处理 千、万、千万、亿....
  2. 纯HTML5+CSS3仿B站播放页
  3. opc ua 用哪种语言编写_OPC UA是个什么东东
  4. c++ 双人五子棋(可直接复制)
  5. Wireshark-----抓包分析
  6. wireshark怎么抓包、wireshark抓包详细图文教程
  7. 请确认计算机上的无线网络已启用,电脑显示已连接无线网络却上不了网
  8. JAVA面试、笔试题
  9. 使用 C# 将数字转换成大写人民币
  10. 打开国庆的正确方式,用Python轻松生成国庆版头像