Android应届生,靠什么拿到的今日头条、携程双offer,sharedpreferences原理

斗鱼

斗鱼是一家直播公司,给出的实习待遇是相当好,经室友推荐就投了简历。最后流程走完,得知挂在了二面上,大概原因就是没有拿得出手的项目,实际项目经验不足。

一面

  1. 线程同步(五个线程如何顺序执行)
  2. GC
  3. 内部类特点
  4. 四大引用范式
  5. 新建线程的方式(三个)
  6. arraylist和linkedlist
  7. 线程池(使用,种类,参数)
  8. hashmap(底层实现,冲突解决方式,扩容方式,线程安全?LinkedHashmap)
  9. 自定义VIew(View的绘制,自定义View的方法)
  10. 性能优化(布局和代码)
  11. sp、dp和px的区别(适配问题)
  12. handler(基本原理,ThreadLocal原理和使用)
  13. 四大组件(问了生命周期和特点和基本使用)* 计网
  14. TCP和UDP
  15. HTTP建立过程

二面

  1. 问的都是一些项目问题,比较宽泛,没问具体技术点

今日头条

今日头条是在三月底投的,当时找了一个月,都没拿到拿得出手的offer,有点心烦意乱,就又海投了一波。3.24做了今日头条的面试,3.29进行的视频面试。一共进行了3轮视频面试,头条的面试官很好,看得出来头条的技术是很强的,也很注重算法。最终拿到offer。

一面

  1. 数据结构中堆的概念,堆排序
  2. 死锁的概念,怎么避免死锁
  3. ReentrantLock
  4. synchronized
  5. volatile
  6. HashMap
  7. singleTask启动模式
  8. 用到的一些开源框架,介绍一个看过源码的,内部实现过程。
  9. 消息机制实现

二面

  1. synchronized与ReentrantLock
  2. ReentrantLock的内部实现
  3. 用到的一些开源框架,介绍一个看过源码的,内部实现过程。
  4. Java中异常
  5. App启动崩溃异常捕捉
  6. 事件传递机制的介绍
  7. ListView的优化
  8. 今日头条推荐新闻去重,推荐的时候去掉用户已经看过的新闻。
  9. 二叉树,给出根节点和目标节点,找出从根节点到目标节点的路径。手写算法
  10. 模式MVP,MVC介绍
  11. 断点续传的实现

三面

  1. 集合的接口和具体实现类,介绍
  2. TreeMap具体实现
  3. synchronized与ReentrantLock
  4. 手写生产者/消费者模式
  5. 逻辑地址与物理地址,为什么使用逻辑地址
  6. volatile
  7. 一个无序,不重复数组,输出N个元素,使得N个元素的和相加为M,给出时间复杂度、空间复杂度。手写算法
  8. Android进程分类
  9. 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
  10. Activity的启动模式

腾讯

腾讯大家都知道互联网巨头,我是通过实习僧上简历投递获得的这次面试机会,一共进行了两轮电话面试,挂在了二面。

一面

  1. 自我介绍
  2. APP的启动流程
  3. APP的安装流程
  4. Rxjava的源码
  5. 事件分发机制和多点触控
  6. https和非对称加密
  7. Retrofit的动态代理
  8. 几种IPC方式的优劣,以及Binder的原理
  9. 本地持久

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》

【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整资料开源分享

化储存的方法
10. parcelable和serializable

二面

  1. 自我介绍
  2. 笔试题1:删除无序链表中的重复结点(能否优化)
  3. 笔试题2:先说一下二叉树的有哪些遍历方法。写一个二叉树前序遍历的非递归形式。
  4. 讲一下Java的内存。
  5. 创建一个字符串对象,这个对象分配在哪里?
  6. String str = “123” + “456”;会创建几个对象。
  7. 问了操作系统的问题,没学过,所以也忘了问了什么。
  8. 数据存储有学过吗?数据库和文件保存有什么区别?
  9. Activity有哪些启动模式?
  10. 有什么要问的?

爱奇艺

爱奇艺也是通过实习僧上简历投递获得的机会,本来不抱希望,结果过了10天左右约我面试。面了大概一个小时,聊得还不错,最后第二天通知我挂了,有点不知所措,可能是实习时间达不到要求吧(只能这样安慰自己了)。

一面

  1. RxJava的功能与原理实现
  2. RecycleView的使用,原理,RecycleView优化
  3. ANR的原因
  4. 四大组件
  5. Service的开启方式
  6. Activity与Service通信的方式
  7. Activity之间的通信方式
  8. HashMap的实现,与HashSet的区别
  9. JVM内存模型,内存区域
  10. Java中同步使用的关键字,死锁
  11. MVP模式
  12. Java设计模式,观察者模式
  13. Activity与Fragment之间生命周期比较
  14. 广播的使用场景

携程

携程是3月份投的内推,结果挂掉了,后来通过笔试又获得的机会,笔试完快一个月才收到的通知,本来都快忘记了。既然通知了,就去面了。经过2轮技术面,1轮hr面,第二轮技术面是总监面,主要聊了聊项目上的问题。最终拿到offer。

一面

  1. Activity启动模式
  2. 广播的使用方式,场景
  3. App中唤醒其他进程的实现方式
  4. AndroidManifest的作用与理解
  5. List,Set,Map的区别
  6. HashSet与HashMap怎么判断集合元素重复
  7. Java中内存区域与垃圾回收机制

二面

  1. EventBus作用,实现方式,代替EventBus的方式
  2. Android中开启摄像头的主要步骤
  3. Github上传了哪些东西,代码量

学习资料

从Android开发工程师的角度来讲,我自己主要准备了以下几个方面的内容:

Java

  • Java基础,如集合,反射,注解,IO,NIO,其中集合很重要,面试常问。
  • JVM,如内存区域,内存模型,垃圾回收机制的算法,收集器,类加载机制。
  • Java并发,如sychronized,lock,volatile,生产者/消费者模式,线程池,死锁。

Android

  • Android基础,如四大组件,Binder机制,消息机制,事件分发机制,自定义View过程。
  • Android开源库,如Retrofit,RxJava等原理实现,优缺点,以及使用。

数据结构

  • 链表
  • 队列
  • 排序

设计模式

  • 单例模式
  • 观察者模式
  • 建造者模式
  • 工厂模式
  • 装饰者模式

操作系统

  • 进程与线程
  • 进程通信

最后的最后

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的

Android应届生,靠什么拿到的今日头条、携程双offer,sharedpreferences原理

最后,互联网不存在所谓的寒冬,只是你没有努力罢了!

程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的

[外链图片转存中…(img-R3RRmt2p-1640843618471)]

最后,互联网不存在所谓的寒冬,只是你没有努力罢了!

本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录

上一篇:扫清 Android 面试障碍


下一篇:Android代码规约