公司倒闭,面试被怼,闭关2个月拿下头条offer

在2019年5月初,公司倒闭,无奈走上找工作的道路,不想自己平时图安逸,不思进取,再次找工作才发现,Android行业也不是站在风口上,猪也能吹上天的世道了.作为技术小菜的我,在找工作那段时间真是战战兢兢,被打击得信心全无.最后用了2个月的时间去复习和学习,历经了几个月的时间,最终拿到了今日头条的offer。

本篇文章记录下我的学习方法和面试经历,分享给需要的人.勉励自己要时时进步,才不会被淘汰.

面经

从老公司倒闭后开始准备面试的东西,在5月底开始投,投递的公司有:

  • 钉钉
    被捞+面试* 网易
    被捞+面试* 滴滴出行
    沉* 腾讯视频
    被捞+面试* 华为
    沉* 今日头条
    被捞+面试* 饿了么

钉钉、网易和腾讯视频都挂在了二面,今日头条是在复习了2个月后才去面试的,经过了3面(不包括HR面)拿到了offer。

钉钉面经

一面(50分钟)

  1. MVC具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?
  2. 两个无限长度链表(也就是可能有环) 判断有没有交点
  3. UITableView的相关优化
  4. KVO、Notification、delegate各自的优缺点,效率还有使用场景
  5. 如何手动通知KVO
  6. Objective-C 中的copy方法
  7. runtime 中,SEL和IMP的区别
  8. autoreleasepool的使用场景和原理
  9. RunLoop的实现原理和数据结构,什么时候会用到
  10. block为什么会有循环引用
  11. 使用GCD如何实现这个需求:A、B、C 三个任务并发,完成后执行任务 D。
  12. NSOperation和GCD的区别
  13. CoreData的使用,如何处理多线程问题
  14. 如何设计图片缓存?
  15. 有没有自己设计过网络控件?

二面(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. 快排了解不?最坏的情况是怎样?如果有大量重复数据怎么优化?

今日头条面经

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

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

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

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

要如何成为Android架构师?

搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;

对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,在这里点击GitHub免费分享,希望能帮你突破瓶颈,跳槽进大厂;

最后我必须强调几点:

1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境

还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。

你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值