大厂卡学历?双非二本Android字节实习面经
Posted River_ly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大厂卡学历?双非二本Android字节实习面经相关的知识,希望对你有一定的参考价值。
最近经常看到诸如《大厂已经不收一本以下的员工了》此类标题的文章,这些文章多是夸大了学历的重要性。学历确实是评价候选人的一个重要参考,但肯定不是唯一标准,在各种常见招聘渠道中的所占的权重也不同
校招渠道
学历在校招中的作用是很大的。校招的投递量大而窗口期短,需要在短时间内与其他大厂争抢最优秀的人才,没有时间对简历进行一一甄别,在学历上设置门槛可以提升筛选效率。所以双非毕业生想通过校招渠道进入大厂有一定难度。但如果你的简历足够亮眼,并且有靠谱的熟人内推,在内推人的背书下还是有机会进入面试的。
社招渠道
随着工作经验的累积学历的权重越来越小,因此社招是很多双非生进入大厂的主要途径。学历权重的降低意味着工作经历权重的上抬,如果你的上家也是大厂那么面试通过率会高很多,如果你的上家默默无名,那么可以通过 小厂 > 中厂 > 大厂 这样的路线来提升履历上的含金量。当然,如果你对你的能力有信心,可以完全忽视履历、学历的影响,大厂里专科生出身的大牛我也见过好多。
实习渠道
实习是一个性价比很高的选项。一般双非生直接通过校招进入大厂是比较难的,但是如果你有实习经历那就不一样了,特别是开发岗的实习生很高的几率可以自动转正,而实习生招聘又不像校招那样学历卡的那么严,一旦你进入大厂实习,即使最终没能顺利转正,大厂的实习经历也能为日后的校招增加筹码。
相对于校招渠道,内推人的背书在实习渠道中的权重更大,倘若是本部门定向内推,那么进入面试的几率非常高。如果你对自己的学历缺乏信心又想在毕业后进入大厂,那么可以通过参与一些社区或者开源活动结识在大厂工作的朋友,有助于帮你获取一些靠谱的内推资源。
面经分享
分享一个前不久进入字节实习的同学的面经。候选人虽然学历不出众,但是在校期间就参与不少社区活动并且有多个作品上架,亮眼的成绩外加靠谱的内推帮他拿下了字节客户端的实习Offer,并即将转正。
作者:zsqw123 (上海工程技术大学)
基本情况:双非学校、非科班生、有三个App上架、目前大三在读
面试流程:4月1日投简历 > 4月中旬参加了笔试 > 4月底收到字节面试邀请 > 5月初一面 > 5月中旬二面 > 5月27日三面 > 6月8日收到Offer
一面(60分钟)
- 个人介绍, 什么时候接触的安卓开发, 实习能实习多久, 介绍一下项目
- 你说你的软件出现了 OOM, 你怎么解决的? 线上 crash 你是用了什么来分析的?
- 这些项目都是怎么来的? 软件中这些内容都怎么来的? 你知道后端怎么来的吗? 后端是不是爬下来的? 每天有多少上传量呢?
- 进程和线程有啥区别呢? 为什么要定义出这样的概念来? 有什么用呢?
- 哈希表是一个怎样的数据结构? 怎么避免 hash 碰撞? 容量有什么样的特点?
- 数据库有了解吗? 索引了解吗? 怎么实现的快速查找? 快速查找的是什么东西?
- TCP 协议如何确保稳定传输?
- 说一下 Activity 的启动模式
- Handler 有了解吗? 说一下原理? 你刚才说到 Looper是个死循环, 那么 messageQueue 没消息的时候那它不还是会循环占用CPU资源吗?
- 我看你用过一些开源库比如说 okhttp, 你能说一下原理吗? 分析一下 okhttp 自带的这些 InterceptorChain 是干啥的? 这些 Interceptor 的用途呢?
- 你觉得有什么你擅长的但是我还没问的?
- 那我讲一下屏幕怎么绘制 view 的吧
- 为什么多次测量性能差了呢? Compose 是怎么解决这些的?
- onMeasure 里面有个东西叫 MeasureSpec , 你说一下这是一个什么样的数据
算法题: 剑指 Offer 38. 字符串的排列
可能当时没答上来的只有个 HashMap 如何尽可能避免碰撞了
二面(45分钟)
- 你主要用的 Java 还是 Kotlin?(我: Kotlin, 面试官:那我问你点 Java 的东西吧)
- 怎么创建一个线程? start 和 run 的区别? 线程和进程的区别? 进程可以没有线程吗?
- android 里面, 主线程的作用是什么? 刷新UI能放到其他线程里面吗? 你说的可以放到其他线程的特殊情况是什么呢? 怎么在子线程弹一个 toast?(提前 Looper.prepare 就行了)
- Looper.prepare 做了什么事情呢? 能介绍一下 ThreadLocal 的含义吗, 内部实现原理呢?
- Java里我们要访问本地一个文件, 我们应该怎么办? FileInputStream 读取的是二进制流数据, 怎么读取文本呢? 怎么判断读到文件末尾了呢?
- 你有没有遇到什么比较难的问题呢? (我: OOM 我项目经常出现(这里想让面试官问我项目, 淦 他不问)) 什么场景会产生 OOM 呢? 什么原因呢? 怎么解决的呢?
- 假设一个图片很大, 应该怎么处理呢? (我: Glide/BitmapFactory(这里想让面试官问Glide 但他没问)), 具体是怎么缩放的呢? 假设 BitmapFactory 的 inSampleSize 设置为2的话, 图片内存占用缩小为多少? ARGB_8888 和 RGB_565 的区别?
- HTTP 请求常用的header说一下? 常见的状态码说一下? 206是什么? 你用过断点续传吗?
- 介绍一下 Jetpack 组件的 ViewModel 和 LiveData 怎么用的, 为什么 ViewModel 可以跟随 Activity 的生命周期而在旋屏时候保留数据呢? (这里说到 ViewModel 我提到了 MVVM 架构, 我想让他问, 但他没问)
- 堆内存和栈内存有啥区别呢? (我这里说堆内存是gc的主要区域, 我想让他问我gc, 淦 他没问) 分别存啥?
- Java里面 ClassLoder 加载机制是什么? 是先去 parentClassLoder 里面加载还是我自己的里面加载呢? 这样做的目的是什么呢?
- Java反射了解吗? 这么去访问一些私有的方法和变量呢?
算法题: 剑指 Offer 54. 二叉搜索树中第K小的元素
刚开始递归遍历子节点个数, 面试官说你这样还会多次遍历啊, 能降低一下复杂度吗? 然后我用了中序遍历; 你这个算法多线程访问可能会出问题啊, 你怎么办, 你不能限制访问者怎么用, 访问者想在多线程去跑这个算法怎么办呢?
一些可能当时没答上来, 答得不好的:
- 线程之间共享内存机制呢?
- 线程之间是共享内存的, 但是线程之间为什么会出现不同步呢?(多线程可见性) 因为除了内存, 数据还会被缓存到CPU寄存器和各级缓存中, 当修改一个变量的时候, 可能会先写到缓存, 稍后再更新到内存
- ThreadLocal实现原理?
- 内部维护了一个简易的 hashmap, hahsmap 的 hashcode 是根据当前线程的获取 threadLocal 的顺序, hashcode 是使用 nextHashCode 方法操作一个 atomicInteger , 每次都会递增一个指定的值, 然后每一个线程都会维护一个 ThreadLocalHashMap, ThreadLocal 的 get 和 set 方法实际上就是操作当前线程的 ThreadLocalHashMap 对象
三面(40分钟)
- 介绍一下项目
- 介绍一下LaunchMode
- Manifest里面activity的process什么用途, 为什么要多进程呢?
- 一直在介绍项目…
- 反问: 团队对Kotlin支持态度? 对Jetpack的态度呢? 对新人培养呢?
然后三面就过了, 没啥难的, 问项目那可太简单了, 只要对自己的项目有足够的自信应该都没问题
最后
面试中虽然问了不少基础问题,但围绕作者的项目也聊了不少。候选人为了这个实习机会提前做的大量准备,通过开发自己的 APP 有了实战经验,面试中可以重点介绍自己的项目,化被动为主动,相对于面经本身,这种先知先觉才是更值得大家学习和借鉴的地方。
以上是关于大厂卡学历?双非二本Android字节实习面经的主要内容,如果未能解决你的问题,请参考以下文章
码农逆袭:双非Java程序员如何斩下字节Offer月薪30k