面试题总结

记录下面试过程,帮自己总结与进步。考虑到不必要麻烦先把公司名称隐藏。

自己经历过的面试题

@(面试)

记录下面试过程,帮自己总结与进步。

猫眼面试:

  • java虚拟机的内存分配
  • GC回收机制:什么时候触发回收,GCRoot可以是什么,堆和栈中分别存放哪些
  • ThreadLocal的作用,它是如何保证唯一性的,violate关键字在内存中做了什么
  • 在项目中如何使用MVP,它的好处是什么
  • Android 6.0的权限问题,如果用户在弹出权限dialog后没有允许开启权限并勾选了不再弹出提示该怎么处理。
  • RecyclerView如何将某个item滑动到顶部
  • 将一个app分成多个module开发有什么好处
  • 手写生产者/消费者模型

作业盒子

2018.3.15

  • 演示下自己的app
  • 手写代码实现自定义个圆形进度条
  • 实现动画的方式有哪些?骨骼动画是什么?
  • 通过属性动画实现将一个button放大两倍
  • 事件传递机制:1.如何向右滑动能够退出Activity。2。如果此时Activity有个能横向滚动的Horizontal ListView 那么当我手指在它上面滑动会出现事件冲突吗? 3.如何解决这个Activity和Horizontal ListView的事件冲突。

爱奇艺

2018.3.19
第一轮:

  • 手写个二分查找
  • 内存优化方式,使用过的工具有哪些,解决过哪些内存溢出的问题
  • 事件传递整个过程,如果屏幕上的某个View没有处理点击事件,最终这个事件是交由谁处理的。
  • Window源码里有什么
  • ViewRootImp和window之间是怎么交互的
  • 自定义实现的控件有哪些说下步骤
  • 使用ScrollX和translationX后对控件的影响有什么
  • Context源码

第二轮

  • 手写个个单列表
  • 手写生产者/消费者模型
  • 看过的三方库和Android系统的哪些源码
  • 说下通过注解实现findViewById的思路
  • ThreadLocal如何使用的,作用是什么,举个android源码中使用到他的例子
  • JVM和Dvk的区别
  • JVM实现内存回收的方式,如何确定一个对象没有被引用了
  • 四种引用分别是那几个,不同点是什么

第三轮

  • 优化App的启动方式有哪些
  • 优化App的渲染方式有哪些,造成画面卡顿的原理是什么
  • 在一个Linearlayout 中竖直方向放三个View,他们的子View以及父View的MeasureMode以及具体值得变化过程
  • 如何通过onDraw自己绘制个ViewGruop来进行渲染优化
  • recyclerView整体的机制
  • 画出hashMap的结构图,以及hashMap与hashTable的区别,hashMap为何会出现线程安全问题

阿里影业

电话面试:

  • Handler:

    • 一个Handler对应几个Looper,在主线程中创建的Handler对应的Looper叫什么。
    • 在一个线程中创建多个Handler会有几个MessageQueue
  • Intent能否传递图片,如何传递。

  • 内部类有哪些,使用内部类的优势,内部类中能创建静态函数和变量吗?

  • 一个App开启两个线程,会有创建几个Application

  • arr里面具体有哪些东西,So是什么
    谈谈Android的so

  • mvp使用中碰到的问题,如果View被销毁,那么此时p中有异步回来的消息要view处理,那么怎么解决这个问题

  • Android中Serializable和Parcelable序列化的区别

序列化使用Parcelable使用的是内存效率高,但不适合对象过大,不能写到磁盘不能持久化,持久化用Serializable

支付宝

一面:

  • 手写线程安全的单例,为什么要双重判空
  • 组件化中如何解决资源冲突,R文件本质是什么,8ge16位进制数字分别代表什么
  • AOP思想,怎么实现的数据统计,了解过无痕实现数据统计吗
  • 类加载器分哪几种,看过对应源码吗?
  • piscsso,glide,fresco,区别,缓存机制是怎么实现的
  • IntenService的具体使用
  • 通过组件化如何搭建项目

二面:

  • 性能优化(发现问题--如何解决问题--解决后性能提高多少),使用的工具是什么
  • 对存储了10000个整数类型的数组进行排序,算法复杂度为$O(n)$(手写哈希排序)

人人车

电话面试:

  • Activity的生命周期
  • Handler的实现机制
  • Activity的启动流程

一面:

  • 手写个你在你开发中使用的单列

  • EventBus实现原理

  • Handler实现机制

  • Activity启动源码分析

  • IntentService使用

  • Hook

  • 本地广播和全局广播的区别,以及本地广播的实现原理

    本地广播通过LocalBroadcastManager统一管理
    LocalBroadcastManage存放了intentFilter和之对应的BroadcastReciver
    通过handler来实现发送消息

  • 项目中的知识点

二面:

Dalvik虚拟机执行程序dex文件前,系统会对dex文件做优化,生成可执行文件odex,保存到data/dalvik-cache目录,最后把apk文件中的dex文件删除。

  • 插件化占坑是什么意思

声明空Activity信息到AndroidManifest的行为,我们就叫做占坑了

拉勾

问了很久,范围比较广,但是不是很深。

360

一面:

  • Apk瘦身
  • 插件化
  • 性能优化
  • 单元测试

二面:

  • 自己开发一个广告SDK需要注意事项

三面:

  • 项目框架搭建

四面:

  • 个人规划

好未来

都是些需求的事项思路,没怎么问具体技术点

京东

一面

  • 绘制流程
  • Handler 原理
  • Activity启动流程
  • 事件传递流程

二面

  • 写个快排
  • ANR如何定位,解决
  • 插件化
  • IntentService源码
  • EventBus实现原理

三面:

  • java基础
  • 手写一些需求,主要考察你对风险的预估

新浪

一面:
笔试:6张纸的面试题,
10道多选:比较基础
四道解答题:

  • 通过Handler实现两个子线程进行通讯,
  • 自己实现AsyncTask,
  • 写出Service的2启动方式,及生命周期

两道算法题:

二面:

  • 计算机网络知识
  • okhttp源码
  • jvm内存分配
  • 类加载机制

总结:

高频考点:

  • 并发:

    • 四种常用线程池,各自优缺点
    • Handler实现原理,源码,静态内部类优化写法
    • IntentService的源码,应用场景
    • ThreadLocal,volatile原理
    • 实现线程安全的方式有哪些,类锁和对象锁的区别
    • 写出线程安全的单例
    • 手写消费者/生产者模式
  • UI

    • 绘制流程,自定义个View,invalated和requestLayout的区别
    • 事件传递流程及事件冲突解决方式
    • 属性动画
    • ViewRootImp
  • 源码

    • Activity启动流程
    • app启动流程
    • Handler源码
  • 三方库
    • glide 与其他库的对比,缓存原理
    • eventbus 实现原理
    • Arouter:module间的通讯
    • okhttp
  • 插件化:实现原理,ClassLoader

  • 组件化:

  • 性能优化:如何定位问题,如何解决问题,性能提高多少

  • 计算机网络:三次握手,四次分手

  • jvm内存分配模式

  • 算法

    • 哈希排序
    • 快排
    • 二分查找
  • 数据结构

    • 手写单链表
    • hashMap的结构
    • 栈的结构
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容