字节跳动客户端开发两次一轮游(21 届秋招)

基本情况

字节跳动的提前批是我秋招的第一次面试,时间应该是在7月中下旬,那时候刚结束完小论文,很多东西都没准备起来,发挥的不好是可想而知的。此处建议大家把理想公司的面试尽量安排在靠后的时间点,越后面发挥的会越好。

字节跳动的正式批是走朋友的内推,一个简单的编程题改造因为过于紧张再加上在文档中写,没办法debug,写了较长时间,直接就挂了。此处建议大家多多练习算法题,特别是输入输出和不同情况的变形,除了在leetcode上跑以外,还需要自己本地多跑下,字节比较注重算法题。

提前批(120min)

(基本问题)自我介绍和项目介绍

(计网)http和https的区别

(计网)浏览器中输入域名(url)后发生了什么

(操作系统)进程和线程的定义

(操作系统)进程通信方式

(安卓)Android 进程通信的方法

(安卓)Intent 是怎么进程通信的

(安卓)安卓四大组件

(安卓)内存泄漏有哪几种情况

(java)四种类型强制转换

(java)数组和链表的区别

(java)深拷贝和浅拷贝

(jvm)如何判断堆中哪些对象需要被回收

(jvm)gc回收

(jvm)新生代和老年代都用什么算法

(算法)计算某个字符串的所有排列组合,并且按字符串逆字典序排序的方式输出。

类似于有重复字符串的排列组合和无重复字符串的排列组合。看到题目之后先问了面试官字符串会不会有重复的字符,他说有重复。此处建议大家多跟面试官沟通需求。本人当时不太会输入输出,排列组合都弄出来了,但是按逆字典序排序的方式输出时候写错了,写代码弄了1h左右,所以面试失败了。通常面试官不会像这位面试官一样好脾气,看面试者写了一小时。。面试官说我写的思路是对的,但是不知道为啥最后通过率还是0%,可能是牛客网对输入输出有一定的规定,所以大家记得提前练习下输入输出。

本题的多种不同方式的代码在我整理的算法笔记中有写,大家可以搜索关键词(字节1面)。

正式批(50min)

(基本问题)自我介绍和项目介绍

(基本问题)学习路线

(海量数据问题)从海量数据中找出最大的前K个数

(安卓)Handler机制

(安卓)安卓中怎么创建一个线程池

(安卓)Activity A 启动 Activity B,两个Activity的生命周期顺序

(安卓)关于Android Activity之间传递数据的方式

(jvm)jvm中,直接内存是什么

(java)final,finalize, finally有什么区别

(java)HashSet类如何实现添加元素保证不重复的

(算法)最长递增子数组的具体数组

类似于最长上升子序列和递增子序列,但题目要求是输出最长递增子数组(子数组连续,子序列不连续)的具体数组(不是求长度)。面试时候发挥的不是很好,再加上是在文档里面写的,没办法debug,就更紧张了。事后复盘时写出了这题的不同变型【最长递增子数组长度,最长递增子数组具体数组,最长非递减子数组长度,最长非递减子数组具体数组,最长递减子数组长度,最长递减子数组具体数组,最长非递增子数组长度,最长非递增子数组具体数组。】,在我整理的算法笔记中有写,大家可以搜索关键词(最长递增子数组)

结束语

字节面试的算法题不会很难,但是可能存在一些变型,所以想要面试字节的同学一定要多注意研究每道题的不同情况,除了leetcode练习以外,可以额外在本地做一些变型题和输入输出处理。在面试中,实力和运气都很重要。如果有绝对的实力的话,运气是锦上添花;如果说实力还在发展阶段,运气好的话也可以碰到自己会的题目。心灵鸡汤:面试失败并不可怕的,事后的复盘很重要,不断做更好的自己就行了,某家公司不行的话就下一家公司呗。

最后更新于