字节开发面试(暑假实习)

容器,并发,原子,java底层源码,redis数据结构,使用场景,MYsql索引,如何建索引,表的操作(左连接,右连接,写sql语句,结果),设计模型,中间件(组件,源码),计算机网络,java匿名类的生命周期(java基础),SQL题,固定的概率发红包,最近半年看什么书?

二叉树的层次遍历,
二叉树的最远距离(叶子节点),662. Maximum Width of Binary Tree
二叉树的最近公共节点(最低公共祖先),

下一个排列数(从尾遍历交换再逆序)LeetCode 31 Next Permutations

字符串转float (微软也面到)
自己实现堆排序,看到通俗易懂的版本
(https://zhuanlan.zhihu.com/p/124228169)

def adjustHeap(arr, parent, length):
	temp = arr[parent]
	child = parent * 2 + 1 # 数组下标从0开始,左儿子
	
	while child < length:
	    # 判断左子节点和右子节点的大小,若右边大,则把child定位到右边
	    if child + 1 < length and arr[child] < arr[child+1]:
	        child += 1
	    
	    # 若child大于父节点,则交换位置,否则退出循环
	    if arr[child] > arr[parent]:
	        arr[parent] = arr[child]
	        parent = child
	        child = parent * 2 + 1
	    else:
	        break
	arr[parent] = temp # 调整到合适地方了!
           
def heapSort(arr):
    # 构建大顶推,从最下面的非叶子节点开始向上遍历
    for i in range(len(arr)/2-1, -1,-1):  # 左闭右开区间
        adjustHeap(arr, i, len(arr))
    # 循环执行以下操作:1.交换堆顶元素和末尾元素 2.重新调整为大顶堆
    for i in range(len(arr)-1, -1, -1):
        arr[0], arr[i] = arr[i], arr[0]
        adjustHeap(arr, 0, i) # length为开区间

接雨水(单调栈)

快速查找ip,单调栈(有一队人,身高不同,找每个人右边第一个比他高的)

一面

问了个双向链表用在啥场景下
平面很多个点,然后每次给一个点,求离这个点最近的top k(平面很多个点,然后每次给一个点,求离这个点最近的top k。是不是先排序,然后每个人都访问身边的点就行呢?我感觉很多人查询的时候先做个预处理,让这个预处理所有人都用得上)
场景就是美团上搜索离你最近的餐厅,因为点数会非常多,而且同时会有多个用户查不同的地点

二面

问了区间合并,就是 n 个区间,把相交的区间合并

二面还问了线程可以共享进程的什么资源(堆空间、栈空间之类的),还有进程间通信方法
通信方法我知道,啥能共享这个我后来查了下似乎是线程间各自有独立的系统栈,但堆是共享的

三面

还问了一个开发性问题是内存中大量索引,如何每三十分钟从磁盘更新一次,这个我也没答好
三面问了一个算法:数组内多个数字,有序,如何找出任意两个数和为 target,给出满足条件的个数
这个题我也错了 3 次,面试官提醒了三次才改出来(2sum有重复数字,我处理这个重复错了几次)

之前招行面试还问了一个红黑树,b树,我也都忘了

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值