字节跳动2021春招后端一面新鲜回忆录
确定凉了 (⑉・̆-・̆⑉)
准备 and 凉面感想(基本是零准备)
最近在忙毕设,导师给的要求也太高了吧…,昨晚改论文到两点钟,准备的时间真的是非常少。
感想:
主观上说,这是我面试最尴尬的一次,但是也算是汲取经验了吧(客观上说,是我太菜了…)。
自我介绍完前辈直接来了个灵魂拷问,你的职业规划是什么…说实话我没有长远的职业规划,我也不想虚张声势编一段宏大或者positive的未来规划给前辈听(尽管我也知道那样可能会符合前辈的预期),所以我告诉面试官我没有长远的既定规划,我希望拿到一份好的工作,先积累工作经验再决定未来的走向,前辈对我的回答很不满意,追问我就不能详细一点吗,因此我详细地解释了为什么我没有长远的职业规划…前辈大概觉得很消极不够宏观…
然后就是八股文,能回答但是一般。
然后是手撕代码,原型是力扣上的 分发糖果 ,我死活没有完整思路,写代码写到快结束的时候,面试官说时间关系就先结束了…然而我的一个同学考的是反转链表…
所以我知道肯定是凉了(以及没多久HR就告诉我凉了😅)
所以还是好好搞毕设+准备别的二面好了(失落肯定是有的,然而)
面试内容为 自我介绍 + 问答 + 编程
自我介绍
老生常谈的对话。
问答
# 按题号顺序,没有问数据库相关
- 发现无法访问牛客网,有可能是哪些原因,怎么判断是什么原因?
- 访问牛客网,整个过程发生了什么?(其实就是问从输入网址到获得⻚面的过程)
- 程序是储存在虚拟内存中还是物理内存中?
- 如果我的物理内存只有2GB,不够用,我要怎么置换虚拟内存和物理内存的页面(其实就是问页面置换算法)?
编程
""" 一排学生,给这些学生发糖 要求: * 每个人至少一颗糖 * 相邻的学生,成绩高的比成绩低的至少多一颗糖 输入: 每个学生的成绩 输出: 每个学生至少需要多少颗糖 """# 我只写了一半,没有写出来,现在写一下查完后的思路吧 """ 思路: 从左到右遍历,如果右边学生比左边学生成绩高,则右边学生的糖果=左边学生糖果数量 + 1,如果不是这样,先不管 从右到左遍历,如果左边学生比右边学生成绩高,则左边学生的糖果=右边学生糖果数量 + 1,如果不是这样,先不管 左规则可以保证所有右边成绩更高的都拿到更多的糖 右规则可以保证所有左边成绩更高的都拿到更多的糖 然而你需要同时符合两种规则,所以取每种方法当前学生能拿到的糖果的最大值,就能同时满足两种规则,如下图所示 """class Solution: def candy(self, ratings: List[int]) -> int: cnt = 0 rst1 = [1] * len(ratings) # from left to right rst2 = [1] * len(ratings) # from right to left for i in range(len(ratings)-1): # from left to right if ratings[i+1] > ratings[i]: rst1[i+1] = rst1[i] + 1 for i in range(len(ratings)-1): # from right to left if ratings[-2-i] > ratings[-1-i]: rst2[-2-i] = rst2[-1-i] + 1 cnt += max(rst1[-1-i], rst2[-1-i]) cnt += max(rst1[0], rst2[0]) # 第一位的值在遍历中无法取到,因此得单独加上 return cnt
