一名自信向上的良好青年,参加百度面试被面试官按在地板来回摩擦~
简单回顾一下,面试的经历吧
百度二面对话大概是这样的。
面:这个知道吗?
我:不知道。
面:这个呢?
我:不知道。
面:那我问你这个吧。
我:知道。
面:看过源码吗,底层是怎么实现的?【【底层原理】Linux进程及其调度策略】
我:。。。。。。
面:好吧,下一个问题
场面巨尴尬
下面是具体的问题,可能有忘记的题.没有自我介绍..
1,安卓源码看过多少
有时候看到某个函数,心血来潮可能会点进去看看是如何实现的,但是没有集体性看过.
2,RecyclerView怎么实现的?不知道啊,那你说说是怎么用的?
怎么实现的,我是真的没有一个大体的认识,之前没去集体看过RecyclerView的源码,最多只是知道几个方法是怎么实现的.怎么用的我就不说了,大家都比我清楚.
源码分析可以看看大神的文章搭配起看看源码吧:【Java实现贪吃蛇小游戏(附完整源码)】
RecyclerView源码分析(一)–整体设计
http://www.jianshu.com/p/9ddfdffee5d3
RecyclerView源码分析(二)–测量流程
http://www.jianshu.com/p/4b8d6e5004d5
RecyclerView源码分析(三)–布局流程
http://www.jianshu.com/p/898479f103b6
RecyclerView源码分析(四)–动画流程
http://www.jianshu.com/p/f7f8814bd09a
3,线程池,用过吗?
我:听说过,没用过.
看看大神的文章吧【Java后端技术从0到1路线,一步步走向大神!】
Android开发——Android中常见的4种线程池(保证你能看懂并理解)
http://blog.csdn.net/seu_calvin/article/details/52415337
4,Service和IntentService区别
推荐文章:
Android中IntentService与Service的区别
http://blog.csdn.net/matrix_xu/article/details/7974393
4.1,service的启动方式有几种,分别是什么?生命周期有什么区别?多次调用startService()会启动多个Service吗?bindServive呢?
如果一个 Service 已经被启动,其他代码再试图调用 startService() 方法,是不会执行 onCreate() 的,但会重新执行一次 onStartCommand()【为什么不应该重写service方法?】
看我的Github笔记了解具体详情:
https://github.com/xfhy/notes/blob/master/Android/Android学习笔记/四大组件/Service%20服务.md
5,TreeMap干什么的,怎么用
说实话,我平时确实没怎么用过这个,除了当时在学习时.就是一个排序的?
马克-to-win:TreeSet是按升序顺序输出的。TreeMap也是按升序输出,但是和它的区别就是TreeSet存储的是单个元素,而TreeMap存储的是一个一个的键值对。
http://www.mark-to-win.com/JavaBeginner/JavaBeginner7_web.html#DefinitionUsageOfTreeMap
6,实现单链表倒置,手写【Redis实现的分布式锁和分布式限流】
7,二叉树后序遍历,手写
8,新开一个线程和开一个IntentService有什么区别。假如系统内存不足,谁先被干掉?
(1)前台进程
是用户操作所必须的,任一时间下,仅有少数进程会处于前台,这样的进程拥有一个在屏幕上显示并和用户交互的 activity 或者它的一个IntentReciver 正在运行。仅当内存实在无法供给它们维持同时运行时才会被杀死。一般来说,在这种情况下,设备依然处于使用虚拟内存的状态,必须要杀死一些前台进程以用户界面保持响应。【【底层原理】Linux进程及其调度策略】
(2)可视进程
没有前台组件,但仍可被用户在屏幕上所见。当满足如下任一条件时,进程被认为是可视的:
●它包含着一个不在前台,但仍然为用户可见的activity(它的onPause()方法被调用)。这种情况可能出现在以下情况:比如说,前台activity是一个对话框,而之前的Activity位于其下并可以看到。
●它包含了一个绑定至一个可视的activity的服务。
可视进程依然被视为是很重要的,非到不杀死它们便无法维持前台进程运行时,才会被杀死。
(3)服务进程
是由startService() 方法启动的服务,它不会变成上述两类。尽管服务进程不会直接为用户所见,但它们一般都在做着用户所关心的事情(比如在后台播放mp3或者从网上下载东西)。所以系统会尽量维持它们的运行,除非系统内存不足以维持前台进程和可视进程的运行需要。
(4)背景进程
包含目前不为用户所见的activity(Activity对象的onStop() 方法已被调用)。这些进程与用户体验没有直接的联系,可以在任意时间被杀死以回收内存供前台进程、可视进程以及服务进程使用。一般来说,会有很多背景进程运行,所以它们一般存放于一个LRU(最后使用)列表中以确保最后被用户使用的activity最后被杀死。如果一个activity正确的实现了生命周期方法,并捕获了正确的状态,则杀死它的进程对用户体验不会有任何不良影响。
(5)空进程
不包含任何活动应用程序组件。这种进程存在的唯一原因是做为缓存以改善组件再次于其中运行时的启动时间。系统经常会杀死这种进程以保持进程缓存和系统内核缓存之间的平衡。【面试常考!缓存三大问题及解决方案】
9,List和Set集合存放对象时的区别
10,说说你最擅长的领域,比如安卓中的某个东西,或者算法,数据结构,网络。
11,说出你的优点和缺点。说说最值得你骄傲的事情。
12,关注最新的技术?说说学过Kotlin哪些东西?我:学过一些语法和写过几个demo。面:什么,就只是语法层?好吧,下一个问题
13,二分查找的时间复杂度
总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。
由于n/2^k取整后>=1,即令n/2^k=1,
可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)
14,Activity.OnNewIntent()解释一下是什么?
Activity的四种启动模式和onNewIntent()
http://blog.csdn.net/linghu_java/article/details/17266603
15,怎么利用handler实现主线程和子线程通信?MessageQueue是什么?子线程实现hander应该注意什么?
这个刚好知道.哈哈
16,ThreadLocal用过吗?
彻底理解ThreadLocal【深入分析 ThreadLocal 内存泄漏问题】
http://blog.csdn.net/lufeng20/article/details/24314381/
17,HandlerThread用过吗?
Android HandlerThread 完全解析
http://blog.csdn.net/lmj623565791/article/details/47079737/
18,Java中是怎么实现线程同步的?假如我定义一个类,里面有一个方法fa()被synchronized修饰了,另一个fb()没有被修饰。现在声明2个对象a1,a2,现在2个线程同时分别调用a1.fa(),a2.fb(),fb()方法中的代码会被执行到吗?
19,会反编译吗?我:用过,拿来反编译其他的app。
20,你觉得你的安卓达到一个什么样的水平了?
21,面:好了,还有什么想问的吗?
22,回去等消息吧,待会儿HR小姐姐会联系你。过了的话还有三面,大概在这周三。
总结
很多问题不会,场面蜜汁尴尬.好吧,本人菜鸟一枚….【如何准备校招技术面试+一只小菜鸟的面试之路】
下面是一个朋友(也是这场百度,二面)的问题
计算机网络:
http协议概述,特点,运用,http为什么底层是tcp不是udp ?
tcp是基于流式传输的,怎么设计协议,进行协议的解析?
抓包工具的原理是啥?
socket异常断开时,设计一个合理的重连机制。
数据结构:
叫我写二叉树的前序遍历非递归,跟递归方式比较时间复杂度,快排的原理。
项目:
检测内存泄漏的工具,它为什么能检测?
做过的项目有什么技术难点(我说的难点在面试官看来都是简单问题)?
思维题:
在很多的数据中如何快速找到最大的100个数?
你有什么创新能力?
你还有什么问题问我?
扩展阅读
最新Java面经 | 阿里2019实习内推 五轮技术面+一轮HR面
来源:https://blog.csdn.net/xfhy_/article/details/78024466
网友评论