字节跳动面试 推荐算法

字节跳动面试 推荐算法

代码题:

给定一个数组points,里面是一些点的浮点数的坐标。再给定一个中心点坐标center。再给定一个数字k。现要求以center为中心点画正方形,求能包含points里k个点的最小正方形边长N。

输入:
points=[[1.0,2.2],[-0.5,1,2],[-2.1,-1.0],[1.5,-0.5]]
center=[0.0,0.0]
k=2

输出:
N=3.0
示例

解题思路:
topK问题的变形
(1)用一个新数组distance[]来存储center与points数组中每个点的横纵坐标差值中的最大值。
(2)找到distance数组中的第k-1个


points=[[1.0,2.2],[-0.5,1,2],[-2.1,-1.0],[1.5,-0.5]]
center=[0.0,0.0]
k=2
distance=[]

for i in range(len(points)):
    distance_x=abs(center[0]-points[i][0])
    distance_y=abs(center[1]-points[i][1])
    distance.append(max(distance_x,distance_y))

    

def partition(arr,low,high):
    i=low-1
    #基准值为arr[high]
    for j in range(low,high):
        if arr[j]<arr[high]:
            i+=1
            arr[i],arr[j]=arr[j],arr[i]
            
    arr[i+1],arr[high]=arr[high],arr[i+1]
    return i+1

def find_k(arr,low,high):
    index=partition(arr,low,high)
    if index==k-1:
        return
    if index>k-1:
        find_k(arr,low,index-1)
    else:
        find_k(arr,index+1,high)

find_k(distance,0,len(distance)-1)
print(2*distance[k-1])

问答题:

  1. 过拟合的原因、怎样发现、怎样解决。
  2. 正则化。
  3. 最大似然函数怎么推出loss函数

惨痛的经验教训:
一面就被挂难免很伤心,不过还是要从自身上找找原因的。
代码方面:

  1. 代码刚开始讲的思路是不对的,在面试官的纠正和提示下才想到正确的思路。
  2. 写完code后有bug,细节部分思考的太少。比如其实不用找topK个,只需要找第K-1个就行。
  3. 没有答topK的算法的复杂度。
  4. 正则化细节的东西没有掌握。
  5. 自己的项目太简单了,有点不对口。

本来以为心情已经低到谷底了,但是后来发现,原来还没到谷底,还有心情更低点。

今天边听学长分享会边写这个博客,觉得还是要明确自己的工作方向。面完这么多试,都是宝贵的经验,即使失败也没什么。在思考是不是真的不适合算法这个岗位,转行工程方向会不会比较好。

面试技巧:语气坚定、眼神坚定。

主动、自信!我的宝贝!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值