Android 面试题总结(第二回合)

这次面试去了不少知名公司,总结出一个规律越是知名的大公司越难进,提问的技术比较偏比较难,需要你有充足的准备和精通的技术。面试前应该慎重准备,准备充分,不要存在侥幸心理, 你以为像这可能不考,这只是你以为。多在网上搜一些有关Android面试题,如有名的公司也可以搜一下网上有关这家公司的面试题,这样更有针对性。还有准备充分java基础和算法编程,可以多在网上搜一些做面试前准备。面试也是一个优胜劣汰的过程,高手应该是无所不会,这样你才能进入理想的公司。如果你技术很好哪家公司都想要你,相反如果你技术很不好哪家公司都不想要你,这就是现实。所以,努力吧少年!

1.java算法编程 :

  a.如何用效率o(n)的方法找出一个数组的最大值和最小值 

  b.如何用效率o(n)的方法使两个有序数组合并为一个有序数组 :http://blog.csdn.net/kevinzhangfei/article/details/46426363

  c.判断一个数是否为2的n次方,有哪些方法 :http://blog.csdn.net/xiangyong58/article/details/8674464

  d.如何按照对角线的顺序打印二维数组 ,和环形顺序打印二维数组:http://blog.csdn.net/liuwei063608/article/details/27342123

  e.求两个数的最大公约数和最小公倍数 :http://blog.csdn.net/shylx123/article/details/6366065

  f.判断1-100哪些是素数 :http://www.cnblogs.com/onway/archive/2012/11/15/2771912.html

  g.实现二叉树、红黑树、strlen
  红黑树:http://www.blogjava.net/CarpenterLee/archive/2016/05/18/430564.html

  h.求一个数二进制中1的个数:http://blog.csdn.net/u011659172/article/details/17127423

   一个整数如何转化为二进制:Integer.toBinaryString(int i),http://blog.csdn.net/wangzhongbo_24/article/details/44601369

  i.子数租的最大和、最大积

  j. KMP算法

  k.实现一个简单的Stack/Queue

java泛型实现的一个简单stack:http://blog.csdn.net/xunileida/article/details/7551423
基于数组实现Java 自定义Queue队列及应用:http://www.2cto.com/kf/201506/406755.html

  还有其他常考的算法编程可以在网上多搜搜多记记,可参考:

Java经典算法四十例编程详解+程序实例:http://blog.csdn.net/wangyang1354/article/details/9746979

经典算法问题的java实现<一>:http://liuqing-2010-07.iteye.com/blog/1396859

2.有多少种排序算法,哪种效率最高(常考,最好是把快速排序等效率高的几种代码记住)

Java中常用的查找算法——顺序查找和二分查找http://www.cnblogs.com/shen-hua/p/5425179.html

3.自定义动画(如属性动画),以及动画原理

Camera 3D效果:http://www.2cto.com/kf/201404/293250.html

android.graphics.Camera 实现简单的3D效果:http://blog.csdn.net/kongbaidepao/article/details/18795697?utm_source=tuicool&utm_medium=referral

4.http和https的区别,I/O和NIO的区别(阻塞和不阻塞、Channel、Buffer)。

java NIO原理及通信模型:http://my.oschina.net/fhd/blog/378849

IO的阻塞与非阻塞、同步与异步:http://www.cnblogs.com/zhuYears/archive/2012/09/28/2690194.html ,

Java解读NIO Socket非阻塞模式:http://developer.51cto.com/art/201112/306366.htm

Reactor 模式的 JAVA NIO 多线程服务器:http://blog.csdn.net/xtwolf008/article/details/7922450

5.Fragment的生命周期,自定义View和ViewGroup的生命周期,View如何保存状态

 Android 自定义控件开发入门(一):http://blog.csdn.net/sunmc1204953974/article/details/38456791

View:http://www.android-doc.com/reference/android/view/View.html

自定义View生命周期:创建》onFinishInflate-->onAttachedToWindow-->onWindowVisibilityChanged(int visibility)-->onMeasure(int widthMeasureSpec, int heightMeasureSpec)-->onMeasure-->onSizeChanged(int w, int h, int oldw, int oldh)-->onLayout(boolean changed, int left, int top, int right, int bottom) -->onWindowFocusChanged(boolean hasWindowFocus)-->onMeasure-->onLayout---> onDraw-->dispatchDraw->【退出】onWindowFocusChanged-->onWindowVisibilityChanged-->onDetachedFromWindow

自定义ViewGroup生命周期:创建》onFinishInflate-->onAttachedToWindow-->onWindowVisibilityChanged-->onMeasure-->onMeasure-->onSizeChanged-->onLayout-->onWindowFocusChanged-->onMeasure-->onSizeChanged-->onLayout-->onDraw-->drawChild-->dispatchDraw【退出】onWindowFocusChanged-->onWindowVisibilityChanged-->onDetachedFromWindow

6.UI线程与非UI线程通信有几种方式,哪种效率高:http://blog.csdn.net/guitk/article/details/21399569

7.做应用的过程中,你是如何优化的,举例说明

8.一些面试官提问的非技术问题你也要总结经验回答圆满,如你能为公司带来什么,你有什么优势等,Android的哪个方面你比较擅长

9.sleep(),wait(),yield()区别,及notify()、notifyAll()

Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition:http://www.cnblogs.com/dolphin0520/p/3920385.html

10.怎么在http链接中设置超时和代理

11.有关JNI的知识,例如:如何使用c++访问到一个对象:http://c.biancheng.net/cpp/biancheng/view/188.html

12.存储管理之段式、页式、段页:http://blog.csdn.net/seawaywjd/article/details/7435190?utm_source=tuicool&utm_medium=referral

13.Binder和AIDL的实现原理

14.常用开源项目的实现原理,如UIL的内存缓存、PullToRefreshListView、PhotoView、AsyncHttpClient等

15.JVM和Dalvik区别,堆和栈的区别,View和SurfaceView区别,HashMap和HashTable区别,hashCode和equal区别,C++引用与指针的的区别,C的free()和delete()区别, invalidate()、postInvalidate()、requestLayout()区别,synchronized和volatile区

C++引用与指针的的区别:http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.html

16.WebView的优化和与JS的交互

为WebView中的Java与JavaScript提供【安全可靠】的多样互通方案 :http://www.itlanbao.com/code/20150922/10000/100546.html
Android 利用WebViewJavascriptBridge 实现js和java的交互(一):http://blog.csdn.net/sk719887916/article/details/47189607
Android Webview Java和Javascript安全交互:http://www.open-open.com/lib/view/open1410920879601.html

【腾讯Bugly干货分享】深入源码探索 ReactNative 通信机制:http://www.cnblogs.com/bugly/p/5266250.html

17.让你设计一个SDK,你有什么思路,项目中有什么比较难的技术

Android应用内社区SDK技术架构浅析:http://blog.csdn.net/bboyfeiyu/article/details/45583515

18.Android如何防止反编译与二次打包,android:debuggable=" "属性

19.基于wifi定位的实现原理

20.Sqlite方面的知识和一些复杂知识,如连表查询,代码写出建立一个数据库和表

21.Handler、Message、Looper的工作原理,Handler可能导致内存泄露

22.android View移动的几种方法:http://blog.csdn.net/itachi85/article/details/50724558

23、LinkedHashMap实现原理

24、java内存模型:http://www.cnblogs.com/nexiyi/p/java_memory_model_and_thread.html ,http://blog.csdn.net/ithomer/article/details/6252552

25、Handler和Looper对应关系:http://www.cnblogs.com/bastard/archive/2012/06/08/2541944.html

26、同步的几种方式区别:synchronized、volatile、Lock

27、应用为什么会卡,如何优化?与内存和CPU有什么关系?

28、java内存模型是什么样子

29、泛型旳优点:http://blog.csdn.net/weixin_36380516/article/details/53606964

30、源码、设计模式、优化、NDK


发布了45 篇原创文章 · 获赞 91 · 访问量 25万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览