博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
是面试官放水,还是公司太缺人?这都没挂,2021的字节跳动也太好进了吧!(面经+经验分享)
阅读量:2116 次
发布时间:2019-04-30

本文共 4765 字,大约阅读时间需要 15 分钟。

前言

本人211非科班,之前在字节和腾讯实习过,这次其实没抱着什么特别大的希望投递,没想到字节可以再给我一次机会,还是挺开心的。

本来以为有个机会就不错啦!没想到能成功上岸,在这里要特别感谢帮我内推的同学,中间投递比较曲折,是他帮了我很多,非常负责任全程跟进内推

话不多说,先来看看这次的面试题

面试题

Android面试题

  • ListView 如何缓存的?
  • RecyclerView联系人列表如何实现A-Z快速定位
  • 广播和EventBus的区别
  • 主线程Looper循环为什么没有卡主线程?nativePollOnce
  • SharedPreference的线程安全、进程安全,如何跨进程
  • Android 中实现多线程: threads, Handler, AsyncTask, IntentService
  • Android 中如何实现多进程
  • 自定义View的过程:measure,layout,draw
  • LayoutInflater#inflate 的 attrachToParent true 是什么意思
  • theme 和 style 有什么区别,优先级
  • 有哪些进程间通信方式
  • View 的渲染过程
  • Binder 的原理和优势
  • AIDL 中的 oneway 有什么用,方向标签 in、out、inout 是什么意思
  • Android 中有哪些动画,都说下
  • Serializable 和 Parcelable 的区别
  • 你知道哪些Layout,ConstraintLayout 的特点是什么
  • 手机开发者选项有哪些,不保留活动是什么

四大组件

  • 当内存不足时Service被杀死了,如何重启这个Service
  • Android系统杀进程时,是怎么考虑进程优先级的?
  • Fragment 的 ViewModel 如何访问到 Activity 的 ViewModel 的数据
  • Activity 4种启动模式说下,各种启动模式适合的应用场景
  • Activity 任务栈从底到顶为 A-B-C,低内存杀死进程后,重新点击,显示哪个?这时如果C里面有Fragment是怎样恢复的?
  • Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?
  • window、view 和 Activity 的关系
  • Activity、Fragment 的各个生命周期依次说一下,各个生命周期里面适合做什么
  • Activity 调用 finish 方法后怎么走到 onDestroy 的

图片

  • Glide缓存特点
  • Glide为我们做了哪些内存优化
  • Glide如何加载 GIF
  • ListView 图片错位的原因,解决方案
  • bitmap如何处理大图,30M的大图如何防止OOM?

网络

  • OKHttp 如何实现缓存
  • OKHttp 的超时时间,有考虑DNS超时码
  • OKHttp 线程池、连接池讲下
  • OKHttp 的所有拦截器有哪些,请求失败了重试1、2次怎么做❤️
  • Retrofit实现机制
  • Room注解如何在编译时生成类文件
  • http 和 https 的区别,shakehand的过程说下
  • 状态码400、401,3xx有哪些
  • 网络劫持是什么,应该怎么做
  • TCP三次握手,握手中的网络包各个标记位是多少,四次挥手说一下
  • TCP 发送窗口是什么?
  • 混合开发h5了解多少
  • 浏览器窗口访问一个网址的过程
  • POST 和 GET 有什么区别

优化

  • 内存泄漏分析,LeakCanary的原理,泄漏对象是如何找到引用链的❤️
  • APK瘦身
  • 启动优化
  • 卡顿分析!!
  • ANR分析!!
  • 为什么布局文件中层级越多,性能可能差很多
  • 你有哪些应用性能优化的经验❤️必问
  • ProGuard怎么写

Java

  • hashCode、equals
  • HashMap 请开始你的表演
  • ConcurrentHashMap 分段加锁的原理
  • 动态代理如何写
  • JVM 内存模型介绍下,哪些地方可能 OutOfMeomory
  • JVM GC
  • 线程池的原理,有哪些拒绝策略
  • Java锁优化:偏向锁、轻量级锁、自旋锁讲一下
  • 为什么说反射的性能不好

Kotlin

  • Kotlin协程为什么能以同步代码写出异步逻辑?
  • suspend 函数的工作原理
  • 在协程上定义了一个局部变量,为什么在其中的其他线程里的协程也能访问到?
  • by 的两种场景,by Lazy 的实现
  • object 单例的实现

算法

  • 各种(冒泡、选择、快排、归并。。。)的时间复杂度,各种查找(顺序查找,。。。)的时间复杂度
  • LRU 实现(146)参考LinkedHashMap实现的3个方法
  • LFU 缓存(460) 同一频率使用LRU的NodeList,外面套一层{freq to NodeList},NodeList用双实现
  • 两数相加(445)
  • 找缺失的数字(268)注意相似题目里有中等
  • 两个队列实现栈(225)
  • 删除子文件夹(1233)
  • 打印(54)
  • 用生成随机数1-5(1,2,3,4,5)的方法,得到一个可以生成随机数(1-7)的方法
  • 54张扑克牌,分成3堆,大小王出现在同一堆的概率(排列组合算数题)

抽象问题

  • 讲讲做过的项目,有哪些亮点
  • 你自己的亮点在哪里,你的加入可以给团队带来什么
  • 技术规划,怎么发展

设计题

  • 如果让你设计一个音乐播放器,要实现哪些接口
  • 设计一个图片下载库:深挖 Glide,如果图片没有设置有效期,如何保证缓存被更新???

选择/建议

5-23: 拿到了蚂蚁国际的成都的意向书,终于缓一口气。

5-20:终于拿到一家的实习offer,我的简历主要投的是大厂,总数其实不多。

1.感觉快手和美团在今年4月的时候是不收人的,3月和5月面的都有面试,我那场笔试AK都有挂的。

2.阿里和字节的好处是有多条命,只要有人捞,可以一直在备胎池里仰卧起坐。然后我腾讯3个月才等来第一次面试。
3.多关注一下学校的内部论坛,比招聘软件上的信息和内推信息靠谱多了。

最近在找春招实习,投的Android方向,面试感触很深,有时候面试完忍不住大骂,但也不得不承认自己很菜,还得继续学习:

1.有的笔试极难,leetcode hard做得让人很难受,面试也会手撕medium到hard难度不等。

2.有些公司做完笔试才知道卡学历极严格,也有做完笔试才知道不招人的。

3.岗位描述和面试内容不符,多次碰到招Android 但全程不问Android的,这样就会全程尬聊。然后基础课这块确实我太弱了,这是非科最大的短板。

4.说是看重基础吧,但很多人的项目一年比一年强,高并发,分布式等越来越多。如果没有好的项目,被面试官在基础问题上反复诘问的话,容错会非常低,很弱势。

5.有些公司备胎池极深,可能受到疫情影响,有很多kpi面,等待面试的过程非常煎熬,自尊心被暴打。

6.面到现在差不多投了7,8家了,很多人还是 0 offer,心态可能扛不住,完全不能以去年的难度衡量。

7.其他答主提到了技术分工越来越细,这就导致了你在投递公司时候的其实选择范围极小,国内bat分别用go,Java,c,这就去掉2/3的大厂很难面试了。Java具体细分还会分电商,企业应用,游戏开发等等,没有对口的项目基本自断一臂。疫情打击最严重的也是Java大户滴滴美团京东,hc数量极少。

8.对非科班的歧视普遍存在,很不容易转行,同等条件下,非科班相比于科班的特长往往不会被岗位所看重。除了真的答得差的一家明确挂了,其他我全在备胎池里被无限拖,如果学历很好的同学有其他路子,没必要硬转互联网。

一位清华的学生去互联网如果只能拿到白菜,那么实际上已经把你变成了北邮。说实话,今年这行情,可能国企公务员是更好的选择吧。

书籍推荐

《代码大全(第2版)》

不了解的朋友看到这个书名,会以为是一本代码示范的工具书。但扫一眼目录,你会发现,这本书几乎覆盖了软件构建的全过程。从需要分析、系统架构设计到具体的编码规范、编码技巧,都可以从中找到答案。

这版书籍并不是第一版的简单修订增补,而是完全进行了重写,增加了很多与时俱进的内容。书中论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。

这本书对经验丰富的程序员、技术带头人、自学的程序员及几乎不懂太多编程技巧的学生们都是大有裨益的。可以说,无论是什么背景的读者,阅读这本书都有助于在更短的时间内、更容易地写出更好的程序。

《Android进阶之光》

一本十分实用的Android进阶类书籍,详细并深入讲解Android开发者必备的和前沿的知识,能帮需要进阶的程序员提高技术水平。

当然,作为一本进阶型的书籍,小白或菜鸟去读的话,一定会感到吃力。建议有一定基础后再深入学习。

《程序员修炼之道》

一本每读一次就有不同收获的书籍。

这本书由一系列的独立的部分组成,涵盖的主题从个人责任、职业发展,直到用于使代码保持灵活、并且易于改编和复用的各种架构技术。

书中利用许多富有娱乐性的奇闻轶事、有思想性的例子以及有趣的类比,全面阐释了软件开发的许多不同方面的最佳实践和重大陷阱。

不管是初学者、有经验的程序员,还是软件项目经理,都能从中找到自己需要的知识。

《人月神话》

“程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。他们运用自己的想象,来建造自己的‘城堡’。”

一本于2002年出版的书籍,然而书中内容并没有随着时代和技术的更迭而褪色。这么多年来,一直被码农界奉为经典。

而且,这本书也并非是一本枯燥的技术文献,而是一系列文采斐然的随笔。从书中,经常能看到技术和人文的碰撞。

《Kotlin实战》

近期,谷歌宣布Kotlin成为安卓开发首选语言。Kotlin作为“better java”的存在,在实用方面会越来越普遍。

这本书的作者是kotlin的实现者,他从语言的基本特性开始讲起,逐步覆盖其更多的高级特性。十分清楚地阐述了Kotlin的各种特性、逻辑。

作者在书中将Kotlin和Java做了大量对比,更有助于读者对Kotlin的理解。不管是打算正式学习、使用Kotlin,还只是想初步了解这个语言,但是一本很好的实用书籍。

尾声

需要全套系列笔记可以直接,点击链接

【】找群主大大免费获取!

Framework可能涉及到的知识点包括:

Android 系统架构、Zygote进程启动过程、SystemServer进程启动过程、Launcher启动过程、WindowManager体系、WindowManager体系、Binder、Handler等。 从每个话题可以多角度切入到不同的领域,全面了解候选人对进程通信机制、常用组件、插件化方案的理解程度。此外高级UI、第三方框架源码理解也是必备的知识技能等。

framwork 精编源码解析

在这里插入图片描述

  • 精华Android 初级-高级学习进阶思维脑图(有几百个细分支,系统学习)

我整理了面试遇到的一些知识点,并画成了思维导图的形式。方便大家复习。

  • 学习笔记(只展示部分)
  • 大厂面试笔记(包含面试题+解析+面试HR必备知识+学习Android基础—高级知识点)
    2020-2021BATJZ大厂面试精编解析
    GitHub,学习知识点

  • 鸿蒙学习笔记
    第二章

学习方向给你们看一下精简版本了,需要完整版的可以找我分享 。由于csdn限制网盘链接,需要相关学习笔记的可以复制我的GitHub地址,

需要相关知识点可以查看我的【】,对于已经掌握的可以忽略以节省时间。

如果不方便查看,我已经整理成了一份PDF包含Android入门,基础—高级的全部系列知识点,还有新技术学习笔记。

需要全套系列笔记可以直接,点击链接

【】找群主大大免费获取!

转载地址:http://rxqef.baihongyu.com/

你可能感兴趣的文章
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>
c结构体、c++结构体和c++类的区别以及错误纠正
查看>>
Linux下查看根目录各文件内存占用情况
查看>>
A星算法详解(个人认为最详细,最通俗易懂的一个版本)
查看>>
利用栈实现DFS
查看>>
逆序对的数量(递归+归并思想)
查看>>