IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 二本双非且非科班出身,面过字节跳动客户端开发 -> 正文阅读

[移动开发]二本双非且非科班出身,面过字节跳动客户端开发

前言

先说明一下, 楼主是二本双非学校, 且非科班生,自学了Kotlin和Android开发 有三个App上架, 大三在读
4月1号投了字节的简历, 4月中旬参加了笔试, 4月底收到字节面试邀请
5月初参加了第一轮面试, 5月中旬参加了二面, 5月27日参加了三面
6月8日 offer mail
在这里插入图片描述

一面(60分钟)

前15分钟

1、个人介绍, 什么时候接触的安卓开发, 实习能实习多久, 介绍一下项目
2、你说你的软件出现了OOM, 你怎么解决的? 线上crash你是用了什么来分析的?
3、这些项目都是怎么来的? 软件中这些内容都怎么来的? 你知道后端怎么来的吗? 后端是不是爬下来的? 每天有多少上传量呢?

接下来15分钟

1、进程和线程有啥区别呢? 为什么要定义出这样的概念来? 有什么用呢?
2、哈希表是一个怎样的数据结构? 怎么避免hash碰撞? 容量有什么样的特点?
3、数据库有了解吗? 索引了解吗? 怎么实现的快速查找? 快速查找的是什么东西?
4、TCP协议如何确保稳定传输?
5、说一下Activity的启动模式
6、Handler有了解吗? 说一下原理? 你刚才说到Looper是个死循环, 那么messageQueue 没消息的时候7、那它不还是会循环占用CPU资源吗?
8、我看你用过一些开源库比如说okhttp, 你能说一下原理吗? 分析一下 okhttp 自带的这些 9、InterceptorChain 是干啥的? 这些 Interceptor 的用途呢?

然后12分钟

你觉得有什么你擅长的但是我还没问的??

1、那我讲一下屏幕怎么绘制view的吧
2、为什么多次测量性能差了呢? Compose是怎么解决这些的?
3、onMeasure里面有个东西叫MeasureSpec, 你说一下这是一个什么样的数据

最后一道算法: 剑指 Offer 38. 字符串的排列 - 力扣(LeetCode) (leetcode-cn.com)

可能当时没答上来的只有个 HashMap 如何尽可能避免碰撞了

二面(45分钟)

1、你主要用的 Java 还是 Kotlin?(我: Kotlin, 面试官:那我问你点 Java 的东西吧,内心极度扭曲)
2、怎么创建一个线程? start 和 run 的区别? 线程和进程的区别? 进程可以没有线程吗?
3、Android 里面, 主线程的作用是什么? 刷新UI能放到其他线程里面吗? 你说的可以放到其他线程的特殊情况是什么呢? 怎么在子线程弹一个 toast?(提前 Looper.prepare 就行了)
4、Looper.prepare 做了什么事情呢? 能介绍一下 ThreadLocal 的含义吗, 内部实现原理呢?
5、Java里我们要访问本地一个文件, 我们应该怎么办? FileInputStream读取的是二进制流数据, 怎么读取文本呢? 怎么判断读到文件末尾了呢?
6、你有没有遇到什么比较难的问题呢? (我: OOM 我项目经常出现(这里想让面试官问我项目, 淦 他不问)) 什么场景会产生OOM呢? 什么原因呢? 怎么解决的呢?
7、假设一个图片很大, 应该怎么处理呢? (我: Glide/BitmapFactory(这里想让面试官问Glide 淦 他不问)), 8、具体是怎么缩放的呢? 假设 BitmapFactory 的 inSampleSize 设置为2的话, 图片内存占用缩小为多少? ARGB_8888和RGB_565的区别?
9、HTTP请求常用的header说一下? 常见的状态码说一下? 206是什么? 你用过断点续传吗?
10、介绍一下Jetpack组件的ViewModel和LiveData怎么用的, 为什么ViewModel可以跟随Activity的生命11、周期而在旋屏时候保留数据呢? (这里说到ViewModel我提到了MVVM架构, 我想让他问, 淦 他没问)
12、堆内存和栈内存有啥区别呢? (我这里说堆内存是gc的主要区域, 我想让他问我gc, 淦 他没问) 分别存啥?
13、Java里面ClassLoder加载机制是什么? 是先去parentClassLoder里面加载还是我自己的里面加载呢? 14、这样做的目的是什么呢?
15、Java反射了解吗? 这么去访问一些私有的方法和变量呢?

算法题: 230. 二叉搜索树中第K小的元素 - 力扣(LeetCode) (leetcode-cn.com)

刚开始递归遍历子节点个数, 面试官说你这样还会多次遍历啊, 能降低一下复杂度吗? 然后我用了中序遍历
你这个算法多线程访问可能会出问题啊, 你怎么办, 你不能限制访问者怎么用, 访问者想在多线程去跑这个算法怎么办呢?

一些可能当时没答上来, 答得不好的:

1、线程之间共享内存机制呢?

线程之间是共享内存的, 但是线程之间为什么会出现不同步呢?(多线程可见性) 因为除了内存, 数据还会被缓存到CPU寄存器和各级缓存中, 当修改一个变量的时候, 可能会先写到缓存, 稍后再更新到内存

2、ThreadLocal实现原理?

内部维护了一个简易的hashmap, hahsmap的hashcode是根据当前线程的获取threadLocal的顺序, hashcode是使用nextHashCode方法操作一个atomicInteger, 每次都会递增一个指定的值, 然后每一个线程都会维护一个ThreadLocalHashMap, ThreadLocal的get和set方法实际上就是操作当前线程的ThreadLocalHashMap 对象

三面(40分钟)

1、介绍一下项目
2、介绍一下LaunchMode
3、Manifest里面activity的process什么用途, 为什么要多进程呢?
4、一直在介绍项目…
5、反问: 团队对Kotlin支持态度? 对Jetpack的态度呢? 对新人培养呢?

然后三面就过了, 没啥难的, 问项目那可太简单了, 只要对自己的项目有足够的自信应该都没问题

面试感受

面试官们都超级有耐心而且很和蔼,答错了面试官也会委婉地提醒你并且引导你说出正确答案,即便双方有互相不理解的点面试官也会和你一起探讨,不会出现面试官说了不对就不对的情况,而且整个面试氛围也是轻松愉快,大家不要太紧张了,把面试当作一次交流技术的机会好好表现自己就可以啦。

最后送给大家几句话

选一个自己相对比较擅长的领域。

基础要 背!平时我并不太去留意要记住各种API,但是这里就是要背过。不然面试官就会想“这么简单的API都含糊不清还说擅长?”就是真的面试的时候记不清了,也不要打磕,要非常自信的说个差不多的,不要说“好像……”这样的话。要的就是自信,因为这个API面试官也不一定记得那么清楚。不过自己能背过才真的有底气。

试着去了解这个领域市面上的技术。一般的话就是一些库或者框架。这里要记住,不要急着去看源码,要先掌握这些技术都有哪些优缺点,尤其是缺点!因为我们经常因为一个库有什么优点而去使用它,但是缺点往往是我们容易忽略的地方。而知不知道这个库的缺点,是你能不能驾驭这个库的一个关键。

如果有时间的话,研究其中一个众所周知的库的源码。并试图找到它缺点的原因,并找到其解决方法。当然你如果正要准备面试了,肯定没有这个时间。那么就找一些现成的相关的文章来看看吧。然后记住。

这些是我复习资料需要的请自行拿走

点击这里

1、各大厂面试题

  • Activity
  • Service
  • Handler
  • View事件分发
  • RecycleView
  • 动画
  • 内存泄漏&内存溢出
  • 性能优化

2、Jetpack架构组件从入门到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架构组件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3、Framework精编内核解析

主要内容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 进程系统
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin强化实战(附Demo)

  • 第一章 Kotlin入门教程
  • 第二章 Kotlin 实战避坑指南
  • 第三章 项目实战《Kotlin Jetpack 实战》
    从一个膜拜大神的 Demo 开始
    Kotlin 写 Gradle 脚本是一种什么体验?
    Kotlin 编程的三重境界
    Kotlin 高阶函数
    Kotlin 泛型
    Kotlin 扩展
    Kotlin 委托
    协程“不为人知”的调试技巧
    图解协程:suspend

在这里插入图片描述

5.Android设计思想解读开源框架

  • 热修复
  • 插件化
  • 组件化框架设计
  • 图片加载框架
  • 网络请求框架
  • RXJava 响应式编程框架设计
  • IOC 架构设计
  • Android架构组件Jetpack

?

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-11 12:31:59  更:2021-08-11 12:33:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:36:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码