公司倒闭,面试被怼,闭关2个月拿下头条offer,年薪60W必备

本文汇总了Android开发者面试中常见的技术话题,包括并发编程(GCD、NSOperation)、CoreData使用、多线程处理、图片缓存、网络编程、进程与线程的区别、内存管理、设计模式、UI生命周期、算法实现、内存泄露检测等,旨在帮助考生准备技术面试。
摘要由CSDN通过智能技术生成
  1. block为什么会有循环引用
  2. 使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
  3. NSOperation和GCD的区别
  4. CoreData的使用,如何处理多线程问题
  5. 如何设计图片缓存?
  6. 有没有自己设计过网络控件?

二面(40分钟)

  1. 怎么判断某个cell是否显示在屏幕上
  2. 进程和线程的区别
  3. TCP与UDP区别
  4. TCP流量控制
  5. 数组和链表的区别
  6. UIView生命周期
  7. 如果页面 A 跳转到 页面 B,A 的viewDidDisappear方法和 B 的viewDidAppear方法哪个先调用?
  8. block循环引用问题
  9. ARC的本质
  10. RunLoop的基本概念,它是怎么休眠的?
  11. Autoreleasepool什么时候释放,在什么场景下使用?
  12. 如何找到字符串中第一个不重复的字符
  13. 哈希表如何处理冲突

网易面经

一面(30分钟)

  1. TCP的三次握手说一下?为什么是三次握手?为什么是四次挥手?
  2. Service用过吗?生命周期说一下?当内存不足时Service被杀死了,如何重启这个Service。
  3. Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
  4. 知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?
  5. Android的持久化方式?ContentProvider自身是否存储数据?

二面(40分钟)

  1. 算法:实现String的endWith()方法。
  2. 创建线程的方式?线程同步方法?
  3. 垃圾回收机制说一下?
  4. 多态说一下?重载和重写说一下?
  5. Android启动模式说一下?如果我要实现网页一样的效果,需要使用哪个模式?
  6. Android的适配了解吗?
  7. 用过哪些第三方库?说一下Okhttp的优点?

腾讯视频面经

一面(40分钟)

  1. mmap + native 日志优化?
  2. 广播和 EventBus 的区别?
  3. 常用设计模式你了解哪些?
  4. 跨进程通信有哪些?
  5. 简单讲讲 binder 驱动吧?
  6. 跨进程传递大内存数据如何做?
  7. 说说 ConcurrentHashMap 的实现原理说下,初始化大小是多少?
  8. 启动优化怎么优化?
  9. 你写的 rxpay 和 rxlogin 具体怎么实现的?
  10. kotlin + fullter 方面的

二面(50分钟)

  1. 单例设计模式都写写,静态内部类是怎么保证线程安全的?
  2. synchronized 底层实现原理,ReentrantLock 公平锁与非公平锁。
  3. 主线程等待所有线程执行完毕,再执行某个特定任务怎么实现?原理和源码看过没?
  4. 自定义 view 的一般流程,要注意些什么如何优化,点击事件和长按事件分别是怎么实现的?
  5. 四种启动模式,在源码分析中的原理是怎样的?
  6. 讲讲 bindService 的过程,你当初是怎么优化后台服务进程的?
  7. 开发中你都用到了哪些设计模式?说说当时具体的场景。为什么你要用方法工厂,另外两种呢?
  8. RxJava 在使用过程中碰到了某些不友好的错误一般怎么解决?发现了内存泄露一般怎么解决分析,有没有碰到过系统服务内存泄露的问题?
  9. 给你个数 1 吧,比如 1000011 里面有几个 1 ?
  10. 快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?

今日头条面经

一面(40分钟)

  1. hashmap实现原理;
  2. 自定义view的步骤;
  3. 给出一个activity的布局:activity里包含viewgroup1,viewgroup1里包含viewgroup2,viewgroup2里包含button,问touch事件的传递和处理机制;
  4. Looper和handler的关系;
  5. activity从后台进程切换到前台经历的生命周期;
  6. 有两个数字非常大已经超出了long型的范围,现在以链表的方式存储其中链表头表示最高位,例如1->2->3->4表示1234,请设计一个算法求出两数之和;

二面(50分钟)

  1. 怎样检测内存泄露,生产上怎么定位内存泄r>2、怎样定位native层叠内存泄r>3、bindservice和startservice的区别
  2. 怎样不让别人绑定我的service服务
  3. 音乐播放器怎样实现退出页面还可以播放
  4. contentprovider插入一条数据要做那些操作
  5. 数据库事务和普通操作的区别,自己怎样实现事务
  6. 内存泄露有哪些,handler,单例,webview,具体场景,怎样解决
  7. touch的事件传递
  8. 怎样在子线程启动handler
  9. 浮窗是怎么实现的,window是由什么管理的
  10. 什么时候复写 measure layout draw
  11. measure方法是怎样将大小传递给系统的
  12. 自定义控件的时候,canvas的savecanvas和restorecanvas的作用
  13. home按键的事件是怎么处理的
  14. 音量键是怎样传递的
  15. aidl的oneway的作用

三面(1小时)

  1. 算法题 两个栈实现队列
  2. 算法题 输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了 O(n)的时间复杂度能实现)
  3. 写一个单例(自己写一种就行)
  4. ActivityA -> Activity B -> Activity A,Activity A 启动模式为 singleTask,Activity B 启动模式为常规模式,问 A 启动 B,B 又启动 A 的生命周期调用顺序?

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频**
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
[外链图片转存中…(img-jO4DDSem-1710934370191)]

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值