Android校招:没想到吧,挂了我头条客户端,我进了抖音客户端(1)

一面(~45min)

  • 介绍项目,讲述一下实习的工作内容和感想(~10min)

  • 什么是内存泄漏,Android里有哪些内存泄漏的场景,原因是什么

  • JVM的GC过程,GC的算法都有哪些

  • 进程和线程的概念,Android里怎样实现多线程?(Thread Handler AsyncTask IntentService等等)

  • Handler的原理和使用

  • Handler是怎么和线程绑定的(Looper),为什么Looper.loop()要设计成死循环

  • Java的几种内部类,区别是什么

  • Activity的生命周期和启动模式

  • 写题:二叉树的右视图(层序遍历即可)

一面比较短,问的问题也比较基础,大概30分钟后开始二面

二面(~1h30min)

  • 自我介绍

  • 介绍项目,为什么要自学安卓(~5min)

  • Android如何实现多进程,应用场景是什么(答的不好)

  • Android的IPC机制(Binder)是否了解(答的也不好)

  • 如何用两个队列(FIFO)实现栈(FILO)

  • HashMap和HashTable区别,HashMap原理和实现,hash()的算法

  • 如果自己设计hash算***怎么设计,为什么(答的素数取余)

  • String的hashCode()和Object的hashCode()

  • 虚拟内存和物理内存的概念和关系,内存分页的调度算法

  • 怎么实现LRU缓存(参考leetcode T146)

  • 可以自己写一个java.lang.Object类吗,系统会加载哪一个

  • Java里泛型的实现

  • 了解常见排序算法吗,手写一下快排

  • Java里加锁的方式,synchornized关键字的原理,悲观锁和乐观锁都有哪些实现

  • 死锁的条件和解决方法,讲讲银行家算法

  • TCP的三次握手四次挥手,为什么要四次挥手

  • TCP的流量控制算法(滑动窗口),拥塞控制算法

  • 怎么解决用户高频点击打开新Activity导致的多实例问题(Activity启动模式)

  • 怎么判断两个无环单链表是否相交

  • 写题:leetcode 445

  • 反问

二面问题量非常的大,集中在Java/OS/算法,但并没有特别难以回答的问题,认真准备的话大部分都能答出来。面试官也非常友好,给了很多引导和提示。

因为三面面试官的时间问题,约了两天后的三面

三面(~45min)

  • 自我介绍

  • 介绍一下实习做的工作,是自己完成的吗,遇到什么困难,成果怎么样

  • RecyclerView怎么实现的item缓存,跟ListView有什么区别(因为项目用到了所以被问了)

  • 写题:1233. 删除子文件夹

  • 设计题:微信的联系人列表功能

(1)设计添加联系人的API(从可能的方式,数据形式,接口参数方面回答)

(2)怎么实现联系人列表的UI(答的RecyclerView)

(3)怎么实现A-Z首字母的快速定位功能

  • 是自学的Android吗,为什么选择外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

资料获取→专栏
这个方向,有没有什么经验给同样想自学的学弟学妹

  • 是哪里人,为什么想到上海来就业

小结

校招生面试,尤其是大厂,说到底,一般主要问几点

  • 基础,包括 Java 基础,计算机基础,Android 的一些基础,Handler,线程池原理

  • 项目或者实习经历,做了什么,难点是什么,有什么收获

  • 算法,这个可以多刷刷剑指 offer,leetcode 或者牛客。

如果想进入大厂的,建议大二,大三的时候,可以着手开始准备。

在大三的时候,尽量争取能够进入中大厂实习,这时候的竞争相对校招会小很多,表现不错的,基本可以直接留下来转正。

投递简历的时候,尽量找师兄师姐内推。简历还可以的,基本可以直接面试,免去了笔试。

面试前的系统复习路线参考

面试:如果不准备充分的面试,完全是浪费时间,更是对自己的不负责!

接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用

**帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。**无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。

1、看视频进行系统学习

前几年的Crud经历,让我明白自己真的算是菜鸡中的战斗机,也正因为Crud,导致自己技术比较零散,也不够深入不够系统,所以重新进行学习是很有必要的。我差的是系统知识,差的结构框架和思路,所以通过视频来学习,效果更好,也更全面。关于视频学习,个人可以推荐去B站进行学习,B站上有很多学习视频,唯一的缺点就是免费的容易过时。

另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

2、进行系统梳理知识,提升储备

客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

  • **架构师筑基必备技能:**深入Java泛型+注解深入浅出+并发编程+数据传输与序列化+Java虚拟机原理+反射与类加载+动态代理+高效IO

  • **Android高级UI与FrameWork源码:**高级UI晋升+Framework内核解析+Android组件内核+数据持久化

  • **360°全方面性能调优:**设计思
    想与代码质量优化+程序性能优化+开发效率优化

  • **解读开源框架设计思想:**热修复设计+插件化框架解读+组件化框架设计+图片加载框架+网络访问框架设计+RXJava响应式编程框架设计+IOC架构设计+Android架构组件Jetpack

  • **NDK模块开发:**NDK基础知识体系+底层图片处理+音视频开发

  • **微信小程序:**小程序介绍+UI开发+API操作+微信对接

  • **Hybrid 开发与Flutter:**Html5项目实战+Flutter进阶

知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。

主要内容:

Java 基础(★★)

  • 面向对象思想

  • 多态

  • 异常处理

  • 数据类型

  • Java 的 IO

  • 集合

  • Java 多线程

Java 高级(★★)

  • Java 中的反射

  • Java 中的动态代理

  • Java 中的设计模式&回收机制

  • Java 的类加载器

Android 基础(★★★)

  • Android 基本常识

  • Activity

  • Service

  • BroadCastReceiver

  • ContentProvider&数据库

  • Android 中的布局

  • ListView

  • JNI & NDK

  • Android 中的网络访问

  • Intent

  • Java 中的设计模式&回收机制

  • Java 的类加载器

Android 基础(★★★)

  • Android 基本常识

  • Activity

  • Service

  • BroadCastReceiver

  • ContentProvider&数据库

  • Android 中的布局

  • ListView

  • JNI & NDK

  • Android 中的网络访问

  • Intent

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值