失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 字节跳动计算机视觉算法工程师面试题(秋招)

字节跳动计算机视觉算法工程师面试题(秋招)

时间:2020-10-07 23:53:14

相关推荐

字节跳动计算机视觉算法工程师面试题(秋招)

1、BN过程,为什么测试和训练不一样?

对于BN,在训练时,是对每一批的训练数据进行归一化,也即用每一批数据的均值和方差。

而在测试时,比如进行一个样本的预测,就并没有batch的概念,因此,这个时候用的均值和方差是全量训练数据的均值和方差,这个可以通过移动平均法求得。

对于BN,当一个模型训练完成之后,它的所有参数都确定了,包括均值和方差,gamma和bata。

2、Leeetcode:160相交链表

方法一:暴力解法

对于A中的每一个结点,我们都遍历一次链表B查找是否存在重复结点,第一个查找到的即第一个公共结点。

class Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:p = headAwhile p:q = headBwhile q:if p == q:return pq = q.nextp = p.nextreturn p

时间复杂度:O(n^2)

空间复杂度:O(1)

无法通过,会超时。

方法二:

对暴力解法的一个优化方案是:先将其中一个链表存到哈希表中,此时再遍历另外一个链表查找重复结点只需 O(n) 时间。

class Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:s = set()p,q = headA,headBwhile p:s.add(p)p = p.nextwhile q:if q in s:return qq = q.nextreturn None

时间复杂度:O(n)

空间复杂度:O(n)

方法三:走过彼此的路

利用两链表长度和相等的性质来使得两个遍历指针同步。

具体做法是:让两指针同时开始遍历,遍历到结尾的时候,跳到对方的头指针,如果有公共结点,则,会同时到达相遇的地方。

代码如下:

class Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:p,q = headA,headBwhile p != q:p = p.next if p else headBq = q.next if q else headAreturn p

时间复杂度:O(n)

空间复杂度:O(1)

3、概率题:两个人轮流抛硬币,抛到正面获胜,反面给对方。先抛的人胜率是多少?

先抛的人胜率是 2/3

A先,B后P(A) = 1/2 +//A直接取胜 1/2 * 1/2 * 1/2 +// A1失败B1失败A2取胜1/2 * 1/2 * 1/2 * 1/2 *1/2 + //A1失败B1失败A2失败B2失败A3取胜...p(A) = 1/2 + (1/2)^3 + (1/2)^5 + (1/2)^7 + ...等比数列求和p(A) = 1/2 * (1 - (1/4)^n) / (1 - 1/4) = 2/3P(B) = 1/2 * 1/2 +// A1失败B1取胜1/2 * 1/2 * 1/2 * 1/2 +// A1失败B1失败A2失败B2取胜1/2 * 1/2 * 1/2 * 1/2 * 1/2 * 1/2 + //A1失败B1失败A2失败B2失败A3失败B3取胜、... p(B) = (1/2)^2 + (1/2)^4 + (1/2)^6 + ..p(B) = 1/4 * (1 - (1/4)^n) / (1 - 1/4) = 1/3

如果觉得《字节跳动计算机视觉算法工程师面试题(秋招)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。