android interview questions

2017-2018 Latest Android Interview Questions

Copyright statement: This article is an original article by the blogger and may not be reproduced without the blogger's permission.  
Original link: http://blog.csdn.net/huangqili1314/article/details/72792682

Hello everyone, before I tell you about my interview experience and the interview questions I encountered, I would like to say a few digressions.

I have been in contact with Android for 3 years. When I encounter difficult problems at work, I always search for answers on the Internet (csdn Daniel blog, stackoverflow, etc.) Thank you so much for this! However, now that I have thought about it, it is also time for me to share the problems I encountered and the solutions, hoping to help those in need.

With the passage of time, many people say that the Internet has become more and more difficult to do, because the era of burning money has passed, and the rest are big companies with solid foundations, and unicorns no longer exist. This has directly led to the decline of Internet jobs. I personally tested it, and this is indeed the case.

In May 2017, I resigned (3 years of work experience at this time, working in Shenzhen), and began to test the Android market, looking for a suitable and stable medium and large company. I have invested in a lot of companies, and the interview opportunities are not as many as I thought. The instant interview process went smoothly, and I didn't get an offer (there are too many candidates). But taking this opportunity, I have interviewed 10 companies before and after, and now I will take the interview questions I encountered and provide some interview skills to the comrades who are about to interview.

OK, enter the topic, please see the Android Knowledge Graph. 
write picture description here

Interviews are nothing more than asking the above questions (there are quite a few - -!), and hiring mid-to-senior Android developers will ask them in depth, and they will ask one and two. Here are some key points that I will first put forward, which are basic questions that the interviewer must ask. Please be sure to understand!

  • Basic knowledge – four components (life cycle, usage scenarios, how to start)
  • java basics - data structures, threads, mvc framework
  • Communication – network connection (HttpClient, HttpUrlConnection), Socket
  • Data Persistence – SQLite, SharedPreferences, ContentProvider
  • Performance optimization – layout optimization, memory optimization, battery optimization
  • 安全 – 数据加密,代码混淆,WebView/Js调用,https
  • UI– 动画
  • 其他 – JNI,AIDL,Handler,Intent等
  • 开源框架 – Volley,Gilde,RxJava等(简历上写你会的,用过的)
  • 拓展 – Android6.0/7.0/8.0特性,kotlin语言,I/O大会

急急忙忙投简历,赶面试,还不如沉淀一两天时间,再过一遍以上内容。想稳妥拿到一个offer,最好能理解实现原理,并且知道使用场景了。不要去背!要去理解!面试官听了一天这些内容是很厌倦的,最好能说出一些自己的见解。


面试题(固定答案不解答,自己可以找到)

顺序是根据记忆排的,没有优先级之分,都是重点。

1.Activity的启动过程(不要回答生命周期) 
http://blog.csdn.net/luoshengyang/article/details/6689748

2.Activity的启动模式以及使用场景 
(1)manifest设置,(2)startActivity flag 
http://blog.csdn.net/CodeEmperor/article/details/50481726 
此处延伸:栈(First In Last Out)与队列(First In First Out)的区别

3.Service的两种启动方式 
(1)startService(),(2)bindService() 
http://www.jianshu.com/p/2fb6eb14fdec

4.Broadcast注册方式与区别 
(1)静态注册(minifest),(2)动态注册 
http://www.jianshu.com/p/ea5e233d9f43 
此处延伸:什么情况下用动态注册

5.HttpClient与HttpUrlConnection的区别 
http://blog.csdn.net/guolin_blog/article/details/12452307 
此处延伸:Volley里用的哪种请求方式(2.3前HttpClient,2.3后HttpUrlConnection)

6.http与https的区别 
http://blog.csdn.net/whatday/article/details/38147103 
此处延伸:https的实现原理

7.手写算法(选择冒泡必须要会) 
http://www.jianshu.com/p/ae97c3ceea8d

8.进程保活(不死进程) 
http://www.jianshu.com/p/63aafe3c12af 
此处延伸:进程的优先级是什么(下面这篇文章,都有说) 
https://segmentfault.com/a/1190000006251859

9.进程间通信的方式 
(1)AIDL,(2)广播,(3)Messenger 
AIDL : https://www.jianshu.com/p/a8e43ad5d7d2 
https://www.jianshu.com/p/0cca211df63c 
Messenger : http://blog.csdn.net/lmj623565791/article/details/47017485 
此处延伸:简述Binder , http://blog.csdn.net/luoshengyang/article/details/6618363/

10.加载大图 
PS:有家小公司(规模写假的,给骗过去了),直接把项目给我看,让我说实现原理。。 
最让我无语的一次面试,就一个点问的我底裤都快穿了,就差帮他们写代码了。。 
http://blog.csdn.net/lmj623565791/article/details/49300989

11.三级缓存(各大图片框架都可以扯到这上面来) 
(1)内存缓存,(2)本地缓存,(3)网络 
内存:http://blog.csdn.net/guolin_blog/article/details/9526203 
本地:http://blog.csdn.net/guolin_blog/article/details/28863651

12.MVP框架(必问) 
http://blog.csdn.net/lmj623565791/article/details/46596109 
此处延伸:手写mvp例子,与mvc之间的区别,mvp的优势

13.讲解一下Context 
http://blog.csdn.net/lmj623565791/article/details/40481055

14.JNI 
http://www.jianshu.com/p/aba734d5b5cd 
此处延伸:项目中使用JNI的地方,如:核心逻辑,密钥,加密逻辑

15.java虚拟机和Dalvik虚拟机的区别 
http://www.jianshu.com/p/923aebd31b65

16.线程sleep和wait有什么区别 
http://blog.csdn.net/liuzhenwen/article/details/4202967

17.View,ViewGroup事件分发 
http://blog.csdn.net/guolin_blog/article/details/9097463 
http://blog.csdn.net/guolin_blog/article/details/9153747

18.保存Activity状态 
onSaveInstanceState() 
http://blog.csdn.net/yuzhiboyi/article/details/7677026

19.WebView与js交互(调用哪些API) 
http://blog.csdn.net/cappuccinolau/article/details/8262821/

20.内存泄露检测,内存性能优化 
http://blog.csdn.net/guolin_blog/article/details/42238627 
这篇文章有四篇,很详细。 
此处延伸: 
(1)内存溢出(OOM)和内存泄露(对象无法被回收)的区别。 
(2)引起内存泄露的原因

21.布局优化 
http://blog.csdn.net/guolin_blog/article/details/43376527

22.自定义view和动画 
以下两个讲解都讲得很透彻,这部分面试官多数不会问很深,要么就给你一个效果让你讲原理。 
(1)http://www.gcssloop.com/customview/CustomViewIndex 
(2)http://blog.csdn.net/yanbober/article/details/50577855

23.设计模式(单例,工厂,观察者。作用,使用场景) 
一般说自己会的就ok,不要只记得名字就一轮嘴说出来,不然有你好受。 
http://blog.csdn.net/jason0539/article/details/23297037/ 
此处延伸:Double Check的写法被要求写出来。

24.String,Stringbuffer,Stringbuilder 区别 
http://blog.csdn.net/kingzone_2008/article/details/9220691

25.开源框架,为什么使用,与别的有什么区别 
这个问题基本必问。在自己简历上写什么框架,他就会问什么。 
如:Volley,面试官会问我Volley的实现原理,与okhttp和retrofit的区别。 
开源框架很多,我就选几个多数公司都会用的出来(框架都是针对业务和性能,所以不一定出名的框架就有人用) 
网络请求:Volley,okhttp,retrofit 
异步:RxJava,AsyncTask 
图片处理:Picasso,Glide 
消息传递:EventBus 
以上框架请自行查找,太多了就不贴出来了。

26.RecyclerView 
这个挺搞笑的。有另外一个同事也在找工作,面试官嫌他没用过RecyclerView直接pass掉。 
http://blog.csdn.net/lmj623565791/article/details/45059587

OK,点到即止。

结语

面试官面什么,完全是看他们个人的(性格,心情,天气,你的面相)。以上只是一些我觉得重要的点,当然还有很多深层的东西不是一时半日可以补上来的,还是要看自己平时的经验积累。面试不单单是技术面,还有高层面,人事面,这些都要看个人发挥了。

PS: If the interviewer says that there is anything else you want to ask, don’t dig a hole for yourself, say how you performed today, and whether you can be admitted. Ask about the company's team and atmosphere, and try to show interest in the company. 
For example: I want to know whether the company holds technical meetings on a regular basis, and whether old employees will share some of their own experiences.

Life is not easy, if an interviewer (you will interview others one day) sees this article, please put down your air or prejudice and respect every interviewer.

Finally, I list a few points to note in the following interview.

  • smiling, polite, humble
  • Dress decently, 80% of those who wear slippers
  • Be sure to bring your resume and pen
  • Come say thank you, say thank you
  • Learn to read the face of the interviewer. If you don't answer well, don't continue to talk.
  • Don't brag about how awesome the projects you've done before, and don't brag about yourself
  • Answer the questions calmly, don't talk a lot, the interviewer is very annoying

Next, I will write a collection of interview questions for big companies such as BAT, which will be released soon and are already being sorted out. If you like it, please give it a thumbs up! 
Finally, I wish you all a smooth interview and find your favorite company as soon as possible.

PS: Dachang advanced interview questions are here! 
Android (2017-2018) BAT interview questions sorting (java articles, including answers) 
Android articles, in-depth technical articles, upper-level/HR articles are being sorted out. .

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325680685&siteId=291194637