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


展开阅读全文

Git 实用技巧

11-24
这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。
©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值