美文网首页程序员
Android 开发面试 “90” 问

Android 开发面试 “90” 问

作者: Android_开发 | 来源:发表于2018-12-21 11:26 被阅读0次

    基础问题相关

    1、接口的意义-百度 

    2、抽象类的意义-百度 

    3、内部类的作用-乐视

    4、Java 虚拟机的特性-百度-乐视

    5、哪些情况下的对象会被垃圾回收机制处理掉-美团-小米

    6、进程和线程的区别-猎豹-美团

    7、java中==和equals和hashCode的区别-乐视

    8、HashMap的实现原理-美团 

    9、string-stringbuffer-stringbuilder区别-小米-乐视-百度

    10、什么导致线程阻塞-58-美团

    11、多线程同步机制-猎豹

    12、ArrayMap对比HashMap

    13、hashmap和hashtable的区别-乐视-小米-360

    14、容器类之间的区别-乐视-美团

    15、抽象类接口区别-360

    Android 方面

    16、如何导入外部数据库?

    17、本地广播和全局广播有什么差别?

    18、intentService作用是什么,AIDL解决了什么问题-小米

    19、Ubuntu编译安卓系统-百度

    20、LaunchMode应用场景-百度-小米-乐视

    21、Touch事件传递流程-小米

    22、View绘制流程-百度

    23、多线程-360

    24、Handler,Thread和HandlerThread的差别-小米

    25、线程同步-百度

    26、什么情况导致内存泄漏-美团

    27、ANR定位和修正

    28、什么情况导致oom-乐视-美团

    29、Service与Activity之间通信的几种方式

    30、如何保证service在后台不被Kill

    31、Requestlayout,onlayout,onDraw,DrawChild区别与联系-猎豹

    32、Android动画框架实现原理

    33、Android为每个应用程序分配的内存大小是多少-美团

    34、优化自定义view百度-乐视-小米

    36、volley-美团-乐视

    37、Glide源码解析

    38、Android设计模式

    39、Android属性动画特性-乐视-小米

    40、Activity Window View三者的差别,fragment的特点-360

    41、invalidate和postInvalidate的区别及使用-百度

    42、LinearLayout和RelativeLayout性能对比-百度

    43、View刷新机制-百度-美团

    44、架构设计-搜狐

    腾讯公司面试题精选

    45、2000万个整数,找出第五十大的数字?

    46、从网络加载一个10M的图片,说下注意事项

    47、自定义View注意事项

    48、项目中常用的设计模式

    49、JVM的理解

    阿里面试题精选

    50、进程间通信方式

    51、什么是协程

    52、内存泄露是怎么回事

    53、程序计数器,引到了逻辑地址(虚地址)和物理地址及其映射关系

    54、数组和链表的区别

    55、二叉树的深度优先遍历和广度优先遍历的具体实现

    56、堆的结构

    57、bitmap对象的理解

    58、什么是深拷贝和浅拷

    59、对象锁和类锁是否会互相影响

    60、looper架构

    61、自定义控件原理

    62、自定义控件原理

    63、ActivityThread,Ams,Wms的工作原理

    64、Java中final,finally,finalize的区别

    65、一个文件中有100万个整数,由空格分开,在程序中判断用户输入的整数是否在此文件中。说出最优的方法

    66、两个进程同时要求写或者读,能不能实现?如何防止进程的同步?

    67、volatile 的意义?

    68、烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时一个小时十五分钟呢?

    69、手写代码:大整数加法

    70、简历上提到使用Butterknife,Butterknife是什么阶段注解?注解的生命周期了解吗?

    71、简历中提到使用Okhttp做网络通讯,说一下Okhttp拦截器

    72、Http和Https区别,没有CA证书可以使用Https访问吗

    73、TCP在是哪一层的协议,三次握手过程

    74、了解什么加密算法,说一说对称加密和非对称加密

    75、了解JVM吗,说说垃圾回收机制

    76、了解apk的编译过程吗,简单说了一下dex

    77、Java中Collection的常用实现类,map的实现类

    78、聊聊Hashmap和Hashtable区别

    79、Hashmap的底层实现方式,如何解决哈希冲突,除了这种解决方式还有没有其他解决方式

    80、很多网站像新浪微博网址都有短地址,如果让你实现怎么做

    81、如何判断两个单链表相交

    82、如何使用两个或多个栈模拟队列

    83、智力题:现在有一个抽奖活动,从8点到10点这段时间会有若干个用户参与抽奖,现在有10个获奖名额,但没有足够大的空间保存所有的数据,要求每个用户等概率中奖,且10点活动截止瞬间开奖。

    二面(50分钟)

    84、手写代码:删除单链表倒数第x个结点

    85、手写代码:z已知,在无序数组中找到两个数x和y,使x+y=z(使用哈希表以空间换时间)

    86、有没有看过Handler的源码,当MessageQueue中没有Message会怎么处理

    87、说一下线程与进程,android跨进程通讯的方式,自己有没有用过

    88、讲一讲AIDL原理

    89、Service有几种启动方式,有什么区别

    90、activity的声明周期和启动模式,举了一个实际场景问点击back之后的跳转

    91、activityA跳转到B过程中A,B的生命周期函数调用顺序

    92、自定义View的相关知识

    经验分享

    在乐视的时候我作为面试官接触过几十个面试者,能左右我是不是通过这个人的,主要因素还是这个人对技术的热爱程度。因为有这种极客精神,做任何技术上的事情都是时间上的问题,所以面试过程中要尽可能表现出对技术的热爱。

    那除了这种因素外,我们怎么做才能更大概率的进入一线公司呢?

    还有一个比较重要的因素就是知识的深度。我认为深度优于广度,广度通过看各种文章都能了解,但一旦碰到实际问题,这时候往往靠的是自己的知识深度。比如,Java程序猿都知道Java是跨平台的,因为会编译成和平台无关的字节码,但是有多少人会知道是怎么编译的?如果不知道虚拟机运行原理,就不可能做出手淘的Atlas容器框架。再比如,很多人知道四大组件职责都是什么,还会些性能优化,但是如果不知道Framework层系统服务原理,就做不出插件化框架。

    因为一线公司业务的复杂度也决定了业务的深度,如果没有较好的深度探究能力,是很难胜任的,所以知识的深度也很重要。

    极客精神加上某一领域知识的深度能力,就可以达到一线公司标准了。面试中非理性因素也有较大比重,但是这种东西是我们没办法掌控的,如果因为这种因素失败了,也没必要气馁。我认为能力是和回报成正比的,就算此刻没发生,下一刻也会出现,只要掌握了我们该掌握的能力,总有一天会进入我们理想的公司。

    关注公众号:

    相关文章

      网友评论

        本文标题:Android 开发面试 “90” 问

        本文链接:https://www.haomeiwen.com/subject/sclmkqtx.html