- block为什么会有循环引用
- 使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
- NSOperation和GCD的区别
- CoreData的使用,如何处理多线程问题
- 如何设计图片缓存?
- 有没有自己设计过网络控件?
二面(40分钟)
- 怎么判断某个cell是否显示在屏幕上
- 进程和线程的区别
- TCP与UDP区别
- TCP流量控制
- 数组和链表的区别
- UIView生命周期
- 如果页面 A 跳转到 页面 B,A 的viewDidDisappear方法和 B 的viewDidAppear方法哪个先调用?
- block循环引用问题
- ARC的本质
- RunLoop的基本概念,它是怎么休眠的?
- Autoreleasepool什么时候释放,在什么场景下使用?
- 如何找到字符串中第一个不重复的字符
- 哈希表如何处理冲突
网易面经
一面(30分钟)
- TCP的三次握手说一下?为什么是三次握手?为什么是四次挥手?
- Service用过吗?生命周期说一下?当内存不足时Service被杀死了,如何重启这个Service。
- Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
- 知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?
- Android的持久化方式?ContentProvider自身是否存储数据?
二面(40分钟)
- 算法:实现String的endWith()方法。
- 创建线程的方式?线程同步方法?
- 垃圾回收机制说一下?
- 多态说一下?重载和重写说一下?
- Android启动模式说一下?如果我要实现网页一样的效果,需要使用哪个模式?
- Android的适配了解吗?
- 用过哪些第三方库?说一下Okhttp的优点?
腾讯视频面经
一面(40分钟)
- mmap + native 日志优化?
- 广播和 EventBus 的区别?
- 常用设计模式你了解哪些?
- 跨进程通信有哪些?
- 简单讲讲 binder 驱动吧?
- 跨进程传递大内存数据如何做?
- 说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
- 启动优化怎么优化?
- 你写的 rxpay 和 rxlogin 具体怎么实现的?
- kotlin + fullter 方面的
二面(50分钟)
- 单例设计模式都写写,静态内部类是怎么保证线程安全的?
- synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
- 主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
- 自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按事件分别是怎么实现的?
- 四种启动模式,在源码分析中的原理是怎样的?
- 讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
- 开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
- RxJava 在使用过程中碰到了某些不友好的错误一般怎么解决?发现了内存泄露一般怎么解决分析,有没有碰到过系统服务内存泄露的问题?
- 给你个数 1 吧,比如 1000011 里面有几个 1 ?
- 快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?
今日头条面经
一面(40分钟)
- hashmap实现原理;
- 自定义view的步骤;
- 给出一个activity的布局:activity里包含viewgroup1,viewgroup1里包含viewgroup2,viewgroup2里包含button,问touch事件的传递和处理机制;
- Looper和handler的关系;
- activity从后台进程切换到前台经历的生命周期;
- 有两个数字非常大已经超出了long型的范围,现在以链表的方式存储其中链表头表示最高位,例如1->2->3->4表示1234,请设计一个算法求出两数之和;
二面(50分钟)
- 怎样检测内存泄露,生产上怎么定位内存泄r>2、怎样定位native层叠内存泄r>3、bindservice和startservice的区别
- 怎样不让别人绑定我的service服务
- 音乐播放器怎样实现退出页面还可以播放
- contentprovider插入一条数据要做那些操作
- 数据库事务和普通操作的区别,自己怎样实现事务
- 内存泄露有哪些,handler,单例,webview,具体场景,怎样解决
- touch的事件传递
- 怎样在子线程启动handler
- 浮窗是怎么实现的,window是由什么管理的
- 什么时候复写 measure layout draw
- measure方法是怎样将大小传递给系统的
- 自定义控件的时候,canvas的savecanvas和restorecanvas的作用
- home按键的事件是怎么处理的
- 音量键是怎样传递的
- aidl的oneway的作用
三面(1小时)
- 算法题 两个栈实现队列
- 算法题 输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了 O(n)的时间复杂度能实现)
- 写一个单例(自己写一种就行)
- ActivityA -> Activity B -> Activity A,Activity A 启动模式为 singleTask,Activity B 启动模式为常规模式,问 A 启动 B,B 又启动 A 的生命周期调用顺序?
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-jO4DDSem-1710934370191)]