博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2021我的第一个offer,字节跳动Android岗,附上我的面经分享
阅读量:2456 次
发布时间:2019-05-10

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

摘要:

开篇之前,首先说一下,博主曾经也只是尘世间一个迷途小开发,二流程序员。可能这篇文章并不像其他面经一样金光闪闪,只是一个二流Android攻城狮在市场的大潮之下,用一个月时间面试+复习+总结,最终在2020的年尾拿到了自己喜欢公司offer(字节跳动Android开发岗,薪资也涨了40%多,对我来说已经很满意了)的故事。

出来社会摸爬滚打三年多,不得不承认人是分三六九等的。即便是专注度、努力这些颇为客观的因素,也是因人而异的。

说下我的个人背景吧:

  • 双非本科,计算机专业。
  • 工作三年,都是小厂,小组最多没超过4个人
  • 算法基础一丢丢(翻书‘马冬梅’,合书‘什么梅’)
  • 英语水平半文盲
  • 有一个自己常年维护的博客,GitHub所有项目加起来有200多个star
  • 懂一点应用层方面的音视频编解码知识

我的字节面经:

字节一面 八十多分钟:(大多是技术问题)

  • 自我介绍,项目介绍

  • 一个activity启动另外一个activity的生命周期调用(这里扯到了allowtaskreparent和taskaffinity

  • handle的原理,子线程为什么不能更新UI?

  • view的绘制过程

  • 滑动冲突

  • 接口和抽象类的区别

  • 内部类和静态内部类的区别

  • string stringbuffer stringbuilder

  • hashmap的源码结构,arraylist,linkedlist

  • 介绍jvm运行时内存结构

  • gc的三种方法复制算法怎么弄的,为什么新生代用复制,年老代用整理

  • 常量池在哪

  • 可重入锁,synchronized,volatile,对象锁类锁

  • 对象头markdowm的偏向锁轻量级锁重量级锁

  • cardtable

  • 四大引用

  • 给一个数组把重复的数字踢出去,没让写代码,讲自己的思路,想的方法越多越好

字节二面

二面面试官见到我特别和蔼,一直笑 ,这一面只有一半问技术,另一半问平时怎么学习的,之前的学习经历这种东西 :

  • 自我介绍+项目介绍
  • mvp mvvm mvc
  • mvvm和mvp区别
  • viewmodel怎么实现的,原理
  • 问我有没有了解什么异于常人的地方
  • 说说ssl tls的发展历程,http的发展历程,tcp拥塞控制的几个算法,如何实现udp的可靠传输,quic协议,dns协议的过程。
  • 之后又问我对安卓的哪些地方感觉设计的比较好
  • 自己学了安卓,感觉哪些地方比较有意思
  • kotlin
  • 内联函数,高阶函数,泛型,lambda表达式
    算法题:
  • 实现一个循环队列

字节3面 三十五分钟

  • 自我介绍
  • 你觉得你在同年级人里面的水平状况
  • 讲下你觉得最全面和难度最高的项目
  • 做项目的动力
  • 算法题每千位加个逗号
  • 未来的学习计划
  • 有什么问题

hr面 十五分钟左右(电话)

大概问了下之前的面试体验,手上是否有其他offer,自我介绍等

感觉问得不偏基础,有些感觉必考基础题没问,第一感觉还是不难的,之后hr就直接谈到了薪资问题。说到这里就觉得这个offer是稳了。

字节面试题答案解析:

只有不断地努力,不停的学习,才能对你的工作和面试当中带来帮助,学习之路,犹如逆水行舟, 不进则退, 下面分享的正是我的学习方法:

准备:

这是最辛苦的阶段,你不仅要把日常的工作做好,还要开始着手准备刷题、基础知识准备以及高阶知识的准备,除此之外我还对英语进行了一些准备,本来英语就是半文盲,由于不管是想去外企、出国以及看英文的文档,英语都是必不可少的,英语在我们的日常生活中也越来越重要,我们要,整个阶段大概持续了4个多月。

其实每一次跳槽,都是对这几年工作的一个梳理和总结,虽然大家都明白“面试造火箭、进去拧螺丝”的道理,对于公司而言,这是筛选人才的一个方式,毕竟人是第一生产力,只要有优秀的人才,那么造出的火箭才可能“一飞冲天”。对于个人而言,如果公司里同事优秀的人,那么你肯定也不会差,我们肯定更希望和优秀的人一起共事。

(一)调整自己的心态,正确面对得失

面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。

(二)提升技术,扩宽知识

对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?

以下是我个人的一些做法,希望可以给各位提供一些帮助:

  • 准备简历

简历是门面,更是敲门砖,能否拿到大厂的面试机会,就要看自己的简历如何,抛开学历以外,大厂最看重简历是否有亮点,因此我们对简历内容要有准备,对自己的突出点,包括技术、个性上的亮点,要练习表达,避免临时组织语言。

优质简历范本:

  • 68天啃完546页的pdf文档(时间挤一挤,制定好计划)

一旦下定决心要提升自己,那么再忙的情况下也要每天挤一挤时间,切记不可“两天打渔三天晒网”。另外,制定好学习计划也是很有必要的,有逻辑有条理的复习,先查漏补缺,然后再系统复习,这样才能够做到事半功倍,效果才会立竿见影。

文中所有资料都可在我的上免费下载。

一、Android部分:

1.第五大组件FragmentAndroid知识体系总结之Android部分之Fragment篇

2.对话框 & 弹框 & 通知 & 悬浮窗之 WMS 源码篇

3.Android UI控件篇 高级自定义View, 主要是原理和手写实现

4.Android 系统架构篇

5.Android 通信篇

6.Android Framework 源码篇

7.Android 网络编程篇

8.原生音视频图片开发篇[非JNI]

9.Android 特殊知识点【不知道如何分类的知识点】

10.Android 必须掌握的轮子 原理篇

11.Android 架构篇

12.Android 优化篇

13.Android 职业方向篇(有正确的职业方向,才能不浪费自己的职业生涯)

14.Android 工作工具篇

15.Android 工作必备技能篇

16.Android 跨平台开发篇

二、Java部分:

1.JVM

2.static

3.final

4.String. StringBuffer. StringBuilder

5.异常处理

6.内部类

7.多态

8.抽象和接口

9.集合框架

10.反射

11.单例

12.多线程

13.volatile

14.synchronized

15.Lock

16.引用类型

17.动态代理

18.元注解

三、 Kotlin 部分

1.Kotlin Primer · 第一章 · 启程

2.Kotlin Primer · 第二章 · 基本语法

3.Kotlin Primer · 第三章 · Kotlin 与 Java 混编

四、计算机网络部分

1.计算机网络体系结构

2.HTTP相关

3.TCP相关

4.Socket

5.总结

五、算法与数据结构部分

1.Android数据结构学习之顺序表

2.Android数据结构学习之链表

3.Android数据结构学习之队列

4.Android数据结构学习之栈

5.Android数据结构学习之树

6.Android数据结构学习之 排序查找

7.Android数据结构学习之 动态规划

六、 Flutter部分

1.Flutter是啥玩意儿?

2.移动端跨平台技术对比

3.Dart语言

4.环境配置

5.Hello World

6.路由

7.widget

8.布局

9.动画

10.http请求

11.吐吐槽知识点总结

12…

七、 性能调优方面

1.设计思想与代码质量优化

2.程序性能优化

3.开发效率优化

  • 读一些实战文档:MVP架构+NDK音频+Flutter+Kotlin实战等

  • 阅读前辈们的一些其他相关电子书:源码+调优+面试等等

  • 猛刷面试题

对于base不是太好的人来说,刷面试题实际上是最具有“急救”效果的办法,因此在面试字节跳动前,我也是刷了不少面试题的,目的倒不是希望面试时能被问到原题,而是对大厂面试有一个相应的了解,清楚面试会问一些什么,涉及到哪些技术栈等。

关于刷题,难在三点:

①2020Android核心面试知识点整理:

②算法部分(大师级算法宝典):

③BAT大厂面试真题+专题训练:

另外还有我私藏的面试题库:(2020精编版)

文中所有资料都是可以免费分享给大家的,

选择一样重要

选择同样是非常重要的,选择的首要前提是你要有很多机会,不然你都没机会怎么选择,在很多机会摆在你面的时候,一定要认真思考,不要冲动,想好自己需要的,多听别人的意见,最后自己决定。我们不能保证每一次选择都是正确的,但是能保证我们是不后悔的,遇事要冷静,多思考。

这里说的选择不仅仅是选择去哪个公司,从事什么方向,还有与什么样的同事工作,选择什么样的leader,甚至是生活中的事情,网上说一个人要有一些成就,需要具备下面几点,我觉得非常的对:

1.你自己要行

2.有人觉得你行

3.觉得你行的人也行

生活与工作

其实这个话题对我来说有一些困惑,“工作是为了更好的生活”,这句话是非常正确的,但是作为一个没有背景、父母帮你付不起首付的普通人来说哪里来的享受生活,唯有不断努力、不断的进步才有更好的物质回报,北京是全中国的人才聚集地,在工作的三年中,我不敢有一丝的懈怠,因为身边比我条件好,能力比我强,年龄比我小的人太多了,不论在哪里资源的分配都是二八原则。

有很多身边人说我是苦行僧,不懂得享受生活,太无趣,的确我不否认,但是我知道唯有这样,我才能为我的父母、爱人以及以后的孩子撑起一片天,反过来讲,这些又是我的动力。感慨有点多了,这个话题全看自己,我满意目前的一个状态。个人拙见,大家看看就行。

最后

感谢大家能耐着性子,看完我啰哩啰嗦的面经,以上仅是个人的观点。小伙伴们如果有自己的见解,有好的学习方法都可以在评论区留言讨论,另外文中所有资料文档都是免费分享给大家的,只需你动动手指点此即可免费领取。

多多支持,即可免费获取资料——三连之后(承诺:100%免费)

你的支持,我的动力;祝各位前程似锦,offer不断!!!

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

你可能感兴趣的文章
joplin_介绍Joplin,这是Evernote的开源替代方案
查看>>
使用Pygame模块使用Python构建游戏框架
查看>>
如何使用PostgreSQL简化Python代码
查看>>
软件博览会上的致辞_本地制造商博览会上有4个著名的开源项目
查看>>
pygame游戏角色旋转_使用Pygame移动游戏角色
查看>>
为什么Python和Pygame是入门程序员的最佳选择
查看>>
上海微钉科技面试题_钉住面试的7个技巧
查看>>
linux有桌面有的没桌面_Linux桌面的政治
查看>>
库蒂尼奥_尼奥基入门
查看>>
强化学习入门论文_强化学习入门
查看>>
kubernetes入门_Kubernetes入门
查看>>
aalto 交互_向芬兰的Aalto Fablab付款
查看>>
迈向更大包容性
查看>>
linux 邮件开源工具_5个适用于Linux的开源个人理财工具
查看>>
机器学习入门python_使用Python进行机器学习入门
查看>>
kde调整分辨率_7个很酷的KDE调整将改变您的生活
查看>>
卫星重访周期_通过开放式冒险重访巨大的洞穴
查看>>
Raspberry Pi Zero W修复了网络遗漏
查看>>
公众号精选评论点赞_十大和编辑精选:三月评论
查看>>
python中flask_为什么以及如何在Python Flask中处理异常
查看>>