鹅厂2021春招后端一面新鲜回忆录
(⑉・̆-・̆⑉)
准备(基本是零准备)
嗐,昨天字节凉了后今天也提不上什么劲儿,毕设论文我用的LaTeX写的,但是导师要word版,我改了两三天,就为了五一腾出时间陪一下来北京的家人们。
昨晚改论文改到凌晨,三点多睡在床上看牛客的腾讯面经,然后去 »> CodeTop «<(划重点!!!)看了一下腾讯后端的高频考题,把高频的 LRU缓存机制
、反转链表
、手撕快排
、合并有序链表
、字符串转整型
几个题都看了一遍,事实证明还是有用的😥
面试内容为 自我介绍 + 项目介绍 + 八股文 + 脑筋急转弯 * 2 + 编程 * 1
自我介绍 + 项目介绍
老生常谈的环节
八股文
# 按题号顺序
- TCP三次握手
- 挥手为什么要四次
- Time_Wait的作用(答完后问我还有没有其他作用,我说我不知道)
- TCP和UDP的区别(我答得比较乱)
- TCP有什么方式保证可靠性(上次也被问过)
- 拥塞控制(因为我上一题答了这个)
- UDP如何保证可靠性,UDP的优点,应用场景
- 快排原理,最坏情况的时间复杂度,怎么样是最坏情况(三种情况,正序逆序和等值),平均的时间复杂度,怎么样是最好情况(我自己莫名其妙说了最好情况下,就被问了…)
- 快排和堆排序的区别(答不上来,忘了堆排序…)
- 数据库慢查询是什么导致的(答得不好,我说没有建索引,数据量大,嵌套查询,查询语句写的不好之类的)
- Python和Java的区别
- 为什么Python不如Java运行快(答得不好…)
- 什么是解释性语言(答不上来…)
- 为什么Java需要编译,Python不需要(答不上来…)
脑筋急转弯
前辈说的是,考考你的智力,伤害不大侮辱极强 🤭
两根不一样的不均匀的香,各自烧都得一小时,问怎么烧能得出15分钟?
(A香两端一起烧 + B香一端烧,烧完用30分钟;B香另一端点燃两端一起烧,烧完15分钟,答完之后面试官问我怎么确定两端一起烧就一定是30分钟烧一根,我被问的一头雾水,但是还是解释了)
一个矩形蛋糕中间有一个矩形空洞,怎么切能够保证蛋糕被平分?
(沿着两个矩形中心的连线切…脑筋急转弯的作用是啥)
编程
""" 本来让我用Java实现字符串转整型,我说我只会Python,于是让我手写快排 """
# Python的字符串转整型,背的力扣的思路,用正则表达式
import re #正则化的包 def transfer(s:str) -> int: s.lstrip(" ") format = re.compile("^[\+\-?\d+]") #正则表达式 s = format.findall(s) # 返回的是一个list,所以需要解包 s = int(*s) return max(min(s, (1<<31)-1), -(1<<31)) # 1<<31,这个表达是网上学的,挺有趣的表达
""" 手写快排 """
def quickSort(nums: list, left: int, right: int) -> None: if left >= right: # 这一步一开始没写上,搞了十几分钟都print不出来 return low = left high = right pivot = nums[left] while low < high: while (high > low) and (nums[high] >= pivot): high -= 1 nums[low] = nums[high] while (high > low) and (nums[low] < pivot): low += 1 nums[high] = nums[low] nums[low] = pivot quickSort(nums, left, low-1) quickSort(nums, low+1, right) list = [1, 4, 3, 3, 1, -1] print(list) quickSort(list, 0, len(list)-1) print(list)
# 输出结果如下 [1, 4, 3, 3, 1, -1] [-1, 1, 1, 3, 3, 4]