资本寒冬下的android面经

在2018年10月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,再找工作那几个月真是战战兢兢,被打击得信心全无.记录下我的面试经历,分享给需要的人.勉励自己要时时进步,才不会被淘汰.


猎豹移动:(有笔试)

atomicinteger内存模型

static编译时有啥不同,static 语句块,static变量,static方法,构造初始化顺序(静态绑定)

animation和animator的用法,概述实现原理

Handler,looper,messagequeue,thread,message,每个类功能,关系?

Mvc,mvp的差异

app闪退的原因有哪些?每种情况简述分析过程

如果一个app存在多进程,请列出全部的ipc方法

操作系统中进程和线程有什么联系和区别,系统什么时候会在用户态和内核态中切换?

如何加载ndk库?如何在jni中注册native函数,有几种注册方式?

一个app如果性能不好,怎么分析?


饿了么(无笔试)

设计的六大原则

如果hashmap key不一样,但是hashcode一样会怎么样?

okhttp有什么优秀的设计模式?builder模式有什么好处?责任链模式有什么好处?

懒汉模式单例为什么加volaitle?

hashmap是否线程安全?不安全会出什么问题?

concurrenthashmap读写分别是啥情况?

bindservice和startservice生命周期有啥不同?

广播有几种?广播是观察者模式?跨进城广播也是观察者模式吗?

ams是怎么找到启动的那个activity的?

a-b-c界面,其中b是singleinstance的,那么c界面点back返回a界面,为什么?怎么管理栈的?

红黑树有啥特性?

在oncreate里面可以得到view的宽高吗?

view的getwidth和getmesurewidth有啥区别?

遍历hashmap的原理?

23种设计模式


中园博林(有笔试)

如何避免out of menmory和anr?

arraymap和hashmap的区别?

如何实现线程同步?

简述android事件分发机制

简述view绘制流程

用两个栈实现一个队列

口头问

viewpager嵌套滑动冲突怎么解决?

svg动画

属性动画画一个抛物线怎么弄?


立思辰(无笔试)

为了适配多分辨率,引入什么开源框架?

阅读界面书架用什么控件实现?

布局怎么做到每行的文字左右对齐?

直播界面,微信对话界面实现?

性能优化怎么弄?


vv音乐(有笔试)

笔试题很多

sax解析xml的优点

Contentvalue 键值类型

androiddvm的进程与linux的进程说法正确的是?(选择题)

Android:gravity和android:layout_gravity的区别?

assets与res/raw的区别?

解释layout_weight的作用

view如何刷新?

animation.animationlistner干什么用的?

android常用布局及排版效率

collection与collections的区别

匿名内部类是否可以extends其他类?是否可以implement interface(接口)

补间动画常见的效果?有哪几个常见的插入器?

override与overload的区别?overloaded的方法是否可以改变返回值的类型?

sleep与wait有什么区别?

在android中,请简述jni的调用过程?

请结束android.mk的作用,并试写一个android.mk文件(包含一个.c源文件即可)

冒泡排序(代码实现)

猴子偷桃问题代码实现

给出两个链表的头指针比如p1,p2,判断这两个链表是否相交,写出主要思路即可

口头问

简述封装,继承,多态

强软弱虚引用的应用场合

输出一个数组,不重复?(有点忘记题目什么意思了)

用四个线程计算数组和(我说用join方法,或者countdownlatch,他说用线程池即可)

什么叫安全发布对象(多线程里面)final?

策略模式和命令模式是啥?

拓扑排序

数组和链表在中间位置的插入效率

binder的原理

art和dvm在gc上有啥不同?有啥改进?

linux和windows下进程怎么通信的?(完全不了解)

性能优化做过什么工作?

一个类实现一个接口,接口引用指向这个类对象,可以不可以调用它的tostring方法?

浏览器,输入url匹配,假设有一亿条url缓存,用什么数据结构匹配?

recycleview缓存机制相比listview缓存机制有啥改进?

一个长度为10的arraylist和linklist,在第五条插入,哪个更快?

子类复写父类的equals方法,但是子类增加了一个成员变量int,请问equals方法咋整?


大数医疗(有笔试)

手写hashmap

写生产者消费者模式,不可用syncronized

treemap,hashmap应用场景


字节跳动(无笔试)

dvm和art的区别

从framework的角度讲activity的启动流程(冷启动)

手写算法,二维数组,每一行,每一列都是升序,找出某数的下标,没有输出[-1,-1],最好的时间复杂度是m+n(行数+列数)

zxing二维码开源框架流程

contentprovider怎么升级维护?

constaintlayout

bitmap有几种格式,分别占多少字节


滴滴出行(无笔试)

android事件分发机制,如何下发,如何上传?

一个界面下拉刷新要怎么实现?

bitmap占用内存多少怎么计算?一个像素占几个字节?

threadlocal的原理?

framework加载activity的流程

arraylist和linkedlist的应用场景

网络请求相关的框架

好几万条短信,滑动卡顿怎么解决?

有没有了解过三方开源数据库(好像是腾讯的什么数据库框架,不仅仅是懂sqlite)

避免内存泄漏,为什么说handler用成员内部类会内存泄漏?activity不是已经到gcroot被切断了吗?还有静态context持有activity的引用会内存泄漏,必须要持有怎么办?(及时释放)

计算viewgroup的层级,递归实现和非递归实现

自己写一个应用,包名就叫android行不行,为什么?

主线程looper如果没有消息,就会阻塞在那,为什么不回anr?

系统进程可以用webview吗?

原子类的了解

一个app多进程的好处

一个arraylist,里面全部是int,讲所有值是2的整数的节点删除

arraymap了解

binder机制

shareprefrence原理?是否线程安全和进程安全?

一个app启动页另开一个进程,启动页10s后启动mainactivity,请问5s的时候有几个进程?

java内存结构,内存模型


融云(有笔试)

冒泡排序手写

如何判断一个字符串是回文字符串


梧桐车联(电话面试没过)

为什么要引入activity这个组件

shareprefrence不是进程安全,假设一个apk两个进程同时修改shareprefrence怎么办?

contenprovider已经是进程间通信,为什么还要引入broadcastreceiver?

a启动b,b启动c,怎样可以在c界面点back退回到a?

startservice和bindservice生命周期有什么不同?

两个应用同时注册一个广播,优先级都一样,哪个会先收到广播?(有序广播?)

还有些其他的,忘记了


蚂蚁金服(电话面试没过)

threadlocal原理

zxing有过优化提高识别率吗?



京东

arraylist里面可以不可以new一个t泛型的数组?

补间动画click事件还在原位怎么解决?

多线程并发

隔代数据库升级

性能优化