首页 > 字节跳动客户端面经(已Offer)
头像
0PJ0
编辑于 2022-03-15 14:21
+ 关注

字节跳动客户端面经(已Offer)

内推链接

https://www.nowcoder.com/discuss/850234

标题就不改了,就在这篇里简要总结一下自己的面试经历吧,真的很简要。

本人211软件工程专业,大三在读,非大佬,所以底下的资料比较适合非大佬型选手想通过较短时间的学习提升自己获得offer。非大佬选手就是那种跟我一样,哈哈在刚开始面试时一问三不知的同学。

个人的方向是Android或JAVA开发工程师,如果各位方向不同的话以下的参考资料部分会失去参考价值,可以总结一下其中适用自己的学习方法。

声明:只是自己的一点总结与建议,不适合所有人哦

先列学习资料:

JAVA:https://juejin.im/post/5d393235f265da1bce3e14d7#heading-5
      https://github.com/CyC2018/CS-Notes
Android:《Android Studio开发实战 从零基础到App上线》
          对应github项目网址:https://github.com/aqi00/android2
计网/OS/数据结构:https://github.com/CyC2018/CS-Notes
                 中国大学MOOC:计网-北交大+哈工大    OS-西安交大    数据结构-浙大
                 自己学校课程ppt
数据库:《Database System Implementation 2nd Edition》- Stanford大佬写的那本
        https://github.com/CyC2018/CS-Notes
算法:Leetcode
面试经验:https://www.nowcoder.com/

经历中的一些总结:

自己的感觉是,各公司其实对于本科生的考察大多都注重基础,上面的资料也是基础相关的,当然有比较大型项目经验的同学更好(我没有),以上的资料边上网课边学大概用了一个月的时间。
比较注重的点:
JAVA底层,掘金网那个资料总共读了两遍,第一遍略读,第二遍把其中列出的源码认真理解。(语言学自己兴趣方向就好,C++,Python等等。)
计网/OS/数据结构/数据库方面,真的安利cyc的仓库,一定要仔仔细细一点一点读完相关部分!另外MOOC对形成自己的知识体系有很大帮助。知识体系真的很重要,比如问为什么计算机网络要分这么多层,每一层存在的意义是什么等等,一层层深入,像一棵树一样一点点发散,有了这个别人的知识就是自己的了。
这两方面自己非常注意记笔记,写下来自己不熟悉的点非常有助于理解。
数据库我是自学,所以MySQL/Redis这些用的少,底层了解的比较多,这个东西看岗位要求了。
算法方面,我在leetcode刷了大概150道题,可能运气比较好,够用了。
对于刷过的题注意总结,最好按部分刷题,比如先动态规划再树相关等等。
安卓我是突击的,基础不好,目前还在学习中,没有什么建设性的建议哈哈。不过我最近的学习资料可以分享一下:

kotlin+Android:
《第一行代码 第三版》
https://wangjiegulu.gitbooks.io/kotlin-for-android-developers-zh/content
kotlin 文档:
https://www.kotlincn.net/docs/reference/android-overview.html
自己的学习仓库:https://github.com/PJYGit/Kotlin4Android

总结一下就是三个过程:确定方向->知识储备->面试经验->入职前。
上面自己的经历可能不适合所有人,但个人觉得知识储备过程重在学习方法吧,内容是次要的。还有就是一定要够努力够坚持,既然非大佬,又不是天才,就要付出更多嘛。
有了知识储备后,知道企业面试官怎么问也是非常重要地一环,这决定了自己的知识储备和能力能否得到人家的认可,这方面多看看面经,模拟面试几次就好。
为什么要提到入职前阶段呢?因为以上多多少少有点“面向面试学习”的感觉了,在入职前应该搞懂自己将来要做什么,在这方面早做准备,不然入职后有苦头吃了,而且“面向面试学习”提升自己的“假象”可能会导致被辞退等严重后果
[/狗头]

先写到这里。。。
下面列一下自己字节跳动抖音客户端的面试经历,其他的公司要么挂了,要么最后婉拒了,就不写了。

一面 05.06 - 17:30

大概45min,一面大概注重语言基础(JAVA)多一些,当然其中掺杂着计网和OS的知识。

  1. 接口和抽象类
  2. 成员变量和方法的区别
  3. 内部类
  4. 基本数据类型,拆箱装箱
  5. java的同步和并发
  6. HashMap的底层实现和扩容机制等
  7. GC垃圾回收机制
  8. java编译后的字节码文件结构是怎样的?嗯?????
  9. 算法:每k个反转链表,leetcode原题。

关于计网和OS的放到下次一起总结吧。

二面 05.06 - 18:30

一二面是连着的,二面大概1h,二面的面试官非常注重计网和OS方面的知识,而且问法一般都是“为什么”相关,这很需要有自己的思考,最好是形成自己的知识体系。这一面答得很不好。

  1. 计算机组成原理。。。我简历上写的但压根没复习,所以gg,只记得一个问题是CPU如何与内存协调。
  2. 计网
    a. 五层结构有哪几层?哪一层实现最麻烦?
    b. TCP是干什么的,为什么有了TCP还需要IP等协议?TCP可靠传输如何实现?三次握手?为什么三次?
    c. DNS解析的过程,为什么目的是获得IP还要用URL,直接用IP不好吗?根服务器在哪里?
    d. HTTP和HTTPS,HTTPS如何加密?
  3. OS
    a. 磁盘空闲空间管理
  4. 数据库---因为我是自学的,只知道一些底层,所以面试官没问MySQL等相关的。
    a. 数据库索引是什么?为什么选择B+树?
  5. 算法:给一个整数数组,找右边元素减左边元素的最大差值,很像leetcode的股票问题II。
    旋转数组,leetcode原题,后来改成了旋转整型。

三面 05.14 - 18:00

二面答得很不好,以为凉了,但官网一直没更新状态,忍了将近一周,问了HR,没想到过了,HR说是早些时候就过了,因为两个部门协调出了一点问题,推到了今天,面试大概1h。

这个面试官是抖音的leader,人超级好,长得还很像我一同学,问问题都会引导你。

  1. 面试官先是问了有关Linux的和对Android的了解,但我这些都停留在表面,后来就直接进入代码环节。
  2. 代码环节:这个也不是纯算法题,就是面试官现场出题。
    a. 线程内部修改外部变量,外部变量用static和volatile修饰时情况是怎样的。去除这些关键字,如何实现变量一经修改,外部打印语句便可以马上打印新的值。(我用的wait和notify但写的不咋地,好久没用了,面试官引导了一会写了出来,但不完美就跳过去了。)
    b. 算法题:二进制反转,leetcode原题,在此之前先写了如何取二进制最后一位(用>> 和 &)。
    c. 实现一个二叉树的前序遍历的Iterator,要用泛型。我想了一会思路不成熟,面试官提示我先写一个非递归前序遍历然后拆分成hasNext()和next(),后来搞出来了。
  3. 职业规划(说我是大三,以后怎么打算)。

反问环节我都省略掉了,有些问题也记不太清了,有时间会再写一个总的面试总结的。

呜呜呜求一个HR面和Offer!!!!!!求了!!!


05.15 - 20:00 刚刚收到HR面的消息了,周一成败在此一举!!!!加油!


05.18 - 18:30 HR面试,大概聊了20多分钟

主要是问了一下自己的个人经历,如何解决遇到的问题的,自己的职业规划和方向是如何的,对入职的担忧有哪些,为什么会有这些想法,自己制定的目标又是如何去付出努力的。

最后HR说要跟面试官商量一下有没有合适的职位,一周内出结果,呜呜呜,千万不要刷掉我呀!

自己春招的面试流程到这也就基本上接近尾声了。

许愿Offer!!也祝大家一切顺利!


HR面后三天了还没有消息,慌慌的。。


05.22 - 11:50 接到OC,正在协商入职时间。


05.22 - 14:30 收到Offer啦!祝大家一切顺利!!

全部评论

(9) 回帖
加载中...
话题 回帖

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐