Android开发程序员,备战字节一个月,复盘字节面试感受

前言

2021届毕业生,双非本科院校(江西师大),没有听错,那个彩礼“天价”的省份。
21届里面,应该算起步比较晚的了。2020年暑假7月份,才开始认认真真“复习“Android,当时连java泛型,组件,多线程都不清楚。因为起步晚,所以后续错过了秋招。

历经一个月战线,投了字节,具体部门这里不展开了,虽然都是些基础岗位,但毕竟是大厂,提供的舞台很大。

接下来复盘一下这一个月来的面试感受吧。

简历

首先是简历,简历是大厂的敲门砖,一份好的简历可以直接决定有没有面试的机会,没有面试的机会你的技术再好也没办法施展,换位思考一下,现在你当面试官,下面是你收到的两份简历(照片),你面(约)哪一个!所以我上了 Boss 直聘更新了一波自己的简历。

关于简历,在此强调一点,正常逻辑下面试官起初肯定是就着简历来问问题的,所以简历中的提及的技术点自己一定要全面掌握。

面试题

一面(1h4min)

  • 自我介绍
  • 介绍MVP,和MVC区别,优势在哪,view层和model层能直接交互吗。
  • 介绍MVVM,和MVP的区别。
  • Activity的生命周期,从Activity A启动Activity B生命周期的变化。
  • Handler,使用时有哪些需要注意的。
  • Handler防止内存泄漏的方法。
  • WeakReference的回收时机。
  • 几种单例模式,细说懒汉式。
  • volatile。
  • 了解哪些线程安全的集合。
  • ConcurrentHashMap。
  • 什么是乐观锁。
  • 锁升级。
  • 消费者生产者模型。 (操作系统还没学)
  • 内部类。
  • 匿名内部类和静态内部类。
  • 内部类为什么可以访问外部的变量。
  • 内部类在字节码里的类名是不是自己定义的那个类名。
  • 扰动函数。
  • equals方法和hashcode方法的作用与联系。
  • 项目中的滑动冲突如何解决的。
  • 滑动冲突有哪些处理方法,外部拦截需要重写哪个方法。 (这里答得不好,扯到内部拦截法上去了)
  • 算法题:高位对齐版的两数相加。
  • 反问。
    问题有点多,暂时只记得这些了

二面(33min)

  • 介绍下项目。
  • SP类是怎么封装的。(这里我说了下自己是怎么对SP工具类优化的,还被怼了,我是fw呜呜呜)
  • SP是线程安全的吗,进程安全呢?
  • SP线程安全实现原理,如果让你自己实现进程安全,你会怎么做?
  • 项目中滑动冲突的解决方法和原理,我说看过事件分发机制的源码,然后面试官就说那你肯定看过recyclerview的源码吧 (这里我???)就把recyclerview的缓存机制说了一下。
  • recyclerview的优点。
  • 能实习多久。
  • 算法题:螺旋矩阵 II。
  • 反问。

三面(50min)

  • 自我介绍
  • 事件分发机制具体用过吗。
  • 给了一个场景题,一个listview里每个item有一个button,如果一直按住这个button,屏幕会怎么滑动,事件会怎么分发。(这里问的很详细,面试官引导着答了很多方面)
  • 同样是这个listview,如果有两个button位置重叠,会分发给哪一个,如果是你你会怎么设计。
  • View绘制流程,在调用onResume方法时屏幕可不可见。(这里我回答判断ViewRootImpl是否初始化)
  • 除了判断ViewRootImpl是否被初始化以外还可以怎么判断。
  • 算法题:打印一个xml布局。
  • 了解过哪些集合。(这里我回答ArrayList,HashMap)
  • ArrayList和LinkedList内部实现,区别,使用场景。
  • 怎么去遍历一个集合,这里面试官想让我回答Iterator。
  • 问项目。
  • 反问。
    来个hr面求求了(内心独白)

最后收到offer。

为应对字节面试,我做了哪些准备?

(一)调整自己的心态,正确面对得失
面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。
(二)提升技术,扩宽知识
对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。

面试题及答案解析

内容涵盖:Java基础,Android基础,UI控件篇,网络通信篇,架构设计篇,性能优化篇,源码流程篇,新技术篇,大厂面经等等...质量非常高!!!不要再看那些到处拼凑出来的面试题了。不管大家最近要不要去面试,都推荐大家先保存起来,后面自己肯定是能够用得上的!文末有获取方式!

第一章 Java基础

  • 静态内部类和非静态内部类的比较
  • 多态的理解与应用
  • java方法的多态性理解
  • java中接口和继承的区别
  • 线程池的好处,详解,单例(绝对好记)
  • 线程池的优点及其原理
  • 线程池的优点(重点)
  • 为什么不推荐通过Executors直接创建线程池
  • 不怕难之BlockingQueue及其实现
  • 深入理解ReentrantLock与Condition
  • Java多线程:线程间通信之Lock
  • Synchronized 关键字原理
  • ReentrantLock原理
  • HashMap中的Hash冲突解决和扩容机制
  • JVM常见面试题
  • JVM内存结构

第二章 Android基础

  • Activity知识点(必问)
  • Fragment知识点
  • Service知识点
  • Intent知识点

第三章 UI控件篇

  • 屏幕适配
  • 主要控件优化
  • 事件分发与嵌套滚动

第四章 网络通信篇

  • 网络协议

第五章 架构设计篇

  • MVP架构设计
  • 组件化架构

第六章 性能优化篇

  • 启动优化
  • 内存优化
  • 绘制优化
  • 安装包优化

第七章 源码流程篇

  • 开源库源码分析
  • Glide源码分析
  • Android面试题:Glide
  • day 20 面试题:Glide面试题
  • 聊一聊关于Glide在面试中的那些事
  • 面试官:简历上如果写Glide,请注意以下几点…
  • Glide OOM问题解决方法汇总
  • OkHttp源码分析
  • Okhttp连接池复用机制
  • Okhttp 流程和优化的实现
  • 一篇让你受用的okhttp分析
  • OkHttp面试之–OkHttp的整个异步请求流
  • OkHttp面试之–HttpEngine中的sendRequest方法详解
  • OkHttp解析大总结
  • Okhttp任务队列工作原理
  • Android高频面试专题 - 架构篇(二)okhttp面试必知必会
  • Android 网络优化,使用 HTTPDNS优化 DNS,从原理到 OkHttp 集成
  • Retrofit源码分析
  • RxJava源码分析
  • RxJava原理与源码分析

第八章 新技术篇

  • 实战问题篇

第九章 面试篇

  • 开源文档
  • 面试题合集

由于篇幅有限,这里只展示了面试题和部分内容截图,有需要完整版(面试题+答案解析)的朋友可以点击这里免费领取!

你可能感兴趣的:(Android开发程序员,备战字节一个月,复盘字节面试感受)