Android面试(2017.03.07)

一时间不晓得怎么开头,恩,昨天去面了个试
人生中第一次面试,算是中型企业,老师内推,笔试过了,技术面没过,在杭州比较偏僻的山沟沟


说实话第一次面试面中型企业没过好像也不是很丢脸,先不吐槽公司的位置以及杭州到处施工的山沟沟,先说说笔试。
笔试的问题还算简单,很基础,我记得多少就写多少吧。

笔试

<b>Q:</b>Android四大组件
<b>A:</b>Activity,Service,广播,内容提供者
<b>E:</b>是广播接收器而不是广播。。。吗?后面两个不会拼,应该是Activity,Service,Broadcast Receiver,Content Provider


<b>Q:</b>Android 4.4后用()虚拟机代替Dalvik虚拟机
<b>A:</b>ART
<b>E:</b>ART(Android runtime),Dalvik每次运行程序都要编译,ART会预编译一次并存储,不用每次运行都编译


<b>Q:</b>说出一个Android 6.0或7.0的新特性
<b>A:</b>权限。6.0以后在需要权限的情况下要自己手动写代码进行请求
<b>E:</b>我不晓得是写编程上面的变化,还是用户体验上的新功能


<b>Q:</b>Service的启动方式。Service是否运行在主线程。
<b>A:</b>startService()和bindService()。Service是运行在主线程。
<b>E:</b>后面还有一个问题,不记得了,也没回答出来。


<b>Q:</b>Intent能传递哪些类型的数据
<b>A:</b>Bundle,String,int,long,boolean,float,double,可串行化对象
<b>E:</b>Serializable不会拼,Parcelable也不会拼,而且两个都不会读=。=


<b>Q:</b>String,StringBuilder,StringBuffer之间的区别
<b>A:</b>String是字符串常量,StringBuilder和StringBuffer是字符串变量,StringBuilder非线程安全,StringBuffer线程安全
<b>E:</b>这个问题。。。网上一堆


<b>Q:</b>final和static关键词的用法
<b>A:</b>final修饰的变量,在初始化(第一次赋值后)就不能更改;final修饰的方法,不能重写;final修饰的类,不能被继承;static修饰的变量,该类的所有实例化对象的该变量都共享同一个内存地址;static修饰的方法,可以用类直接调用该方法,不需要实例化;static修饰的内部类,实例化后不会持有外部类的引用
<b>E:</b>忘了一个static静态代码块,会在加载类的时候执行


<b>Q:</b>Android的数据存储方式
<b>A:</b>
<b>E:</b>因为写在那页纸的最后一行,所以没看到,所以。。。好吧我承认我很粗心=。=


<b>Q:</b>Android的生命周期
<b>A:</b>—→onCreate()
      |              ↓
      |        onStart() ← onRestart()
      |              ↓                    ↑
      |     onResume()           |
      |              ↓                    |
   killed     running               |
      |              ↓                    |
      |       onPause()            |
      |              ↓                    |
      |—— onStop()  ——— |
      |              ↓
      |—  onDestroy()
onPause(),失去焦点但还能看到界面
onStop(),被完全覆盖
<b>E:</b>其实有一个细节错了,onDestroy()左边的线应该放到onPause()左边,被destroy了还怎么被kill=。=


<b>Q:</b>线程间通信的方式
<b>A:</b>Handler,AIDL(进程间)。其中Handler,Looper.prepare()为当前线程添加Looper,然后Looper.loop()开启消息循环(死循环),通过MessageQueue.next()得到Message,调用Message.target.handleMessage()
<b>E:</b>其实原问题的大意是,请列举你所知道的线程间通信的方式,一开始写了Handler,后来看他题目好像意思不止一个,就写了AIDL,毕竟两个进程也是不同的线程~所以到底一共有哪几种=。=

最后还有一题开放题,你做过的最有成就感的事。
笔试过了之后就是面试了,说实话第一次不紧张是不可能的,毕竟没见过这么大的场面=。=
不过有好几个问题,等我出来之后还是没想到,不晓得怎么回答。后来还是在回去的路上仔细回想他的问题,反复想了好几遍才有点想明白过来。
面试这部分,我到现在还没有上网查过。所以下面所有的之后反复仔细才想到答案的题应该算本该回答上来的题。

面试

首先他叫我自我介绍一下,恩,很怂很尴尬,这段就不说了


接着他看了我做的APP问我图片用的什么框架。
我说Glide。
然后问我Glide有什么优点。
缓存。。。?图片质量。。。?
其实我现在有点想一板砖拍死我自己
后来我仔细回想的时候想到Glide的用法,Glide.with(),恩,等等,这他么不是有个绑定activity或Fragment生命周期么(在onPause()和onStop()的时候停止加载?),然后继续想,可以加载数据很大的图,可以加载GIF,提供了流式的接口(那个怎么叫,可以一直点下去的),能够流畅的滑动(所以在滑动的时候停止加载?)
而我偏偏回答了个那什么。。。WTF?


然后问我不用框架自己加载图片。
突然脑子空白了。
框架用傻了?把图片下载下来,加载到内存,加载到ImageView想不到?(ImageView可以直接加载文件路径。。。么?)
又是一板砖。
内心充满了绝望。


然后。。。恩,我记不清问题的顺序了,就先说还有一个没回答上的问题。
他问我网络用的什么框架。
我说Retrofit+OkHttp。
接着问这个好用么。
我他么又是一板砖,说学的时候就用OkHttp,没对比
后来回去的时候想到这个问题,也学着Glide想着怎么用。恩@POST,@GET,这不是有个注解么;然后API的接口类,Observable,Retrofit 2.0不是支持RxJava的Observable接口了么;然后想到Retrofit的初始化,可以自己设置Http Client,可以设置数据转换器


说实话这三个问题的回答没有把我直接赶出去我觉得已经够不错了。这中间有个问题,Handler,Looper,MessageQueue,Message这个问题,因为看过部分源码,所以我回答的看的出他还挺满意的


好像还有一个没有回答出的问题。。。别打我,这个我真不知道。
他问自定义ViewGroup要重写哪些方法。
我说onLayout()。
他说onMeasure()不用么。
一定要重写onMeasure()么,虽然有重写过View的onDraw(),但是自定义ViewGroup确实没有接触过,所以也只是猜的。


我之前笔试不是有一题忘了写么,他就问我那个问题,Android的数据存储方式。
我说,SQLite,SharedPreference,文件
他点了点头,不晓得是不太满意还是在想下一个问题。
所以有哪里不对么,还是有什么漏下了?


最后两个我记得的问题。
一个是提到笔试题中的Intent能传哪些类型的数据,说我写了很多int,float,long之类的,能不能概括一下。
我说都是基本数据类型。
然后他给我补充,基本数据类型,基本数据类型的数组,还有两种可序列化对象和Bundle


另外一个是问我有哪几种引用。
我说强引用,软引用,弱引用,虚引用。
他说软引用和弱引用有什么区别。
我说软引用,内存不够时,会先回收这部分内存;弱引用,如果只有弱引用,那在下次GC的时候就会被回收,不管内存够不够。
接着他补充说,在java中确实是这样,但是Android在3.0还是几的时候,已经把软引用用弱引用来实现了,就是软引用和弱引用是一样的,因为软引用不可控
后面还提了两句LruCache

差不多就是这样了,面试官态度也很好,所以确实是自己发挥的不够好。
其实这次面试,让我有点爱上面试的感觉。在面试官的技术比你NB的情况下,是可以学到很多细节的东西的,因为面试官会对你的回答做补充或纠正,每次面试都是一次和大牛讨教的机会


晚上还有开题报告要改,嘿呀,好气呀

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,398评论 25 707
  • 今天早晨起床后内心还是有些不平静,在帮儿子收拾书包时,看到他昨晚的作业又基本没做时,我的焦虑又上来了,还带给了老公...
    CindyFang阅读 168评论 0 0
  • 引言 我们通过自己远程服务器下载一些文件,然后我们希望把这些文件传回到本地。最常用的方法是sftp。问题是 怎么提...
    超能_阅读 3,517评论 0 1
  • 这是《忆,我与老师的交锋》(连载)系列文章,请参看: 目录1.【原创】忆,我与老师的交锋(连载)——1 2.【原创...
    不忘思考阅读 235评论 1 0