字节跳动面试

前言:

面试我的是一个西北大学的ACM选手,是一个小姐姐,感觉和我差不多大,做LeetCode hard题目只用稍微想一下就能做出来的那种(这也是后来聊天得知)。小姐姐全程都很有礼貌,面试体验很好。但奈何自己菜的抠脚. 祝头条越来越好,以后有机会还会继续投。说项目吹的天花乱坠都是扯淡,工程能力(coding)达不到,就不要应聘算法工程师了,leetcode中等难度的题目能做到15分钟一道差不多可以摸到头条的门槛,达到这个水平在投简历吧,不然别去丢人了,这是我面试算法岗得出的经验。 学校发论文做学术的用轮子,改轮子的能力不要提,low的一匹。进大公司一定要提升自己的编码能力。就是那种面试什么都不问,上来给你几道算法题,就是那种动态规划,贪心,链表找环等常见算法题,你都能不费力KO掉的能力,写完了我们可以继续聊,不然一封感谢信送给你。 秋招继续刷题总结呀,抠脚啊,哎。

后记:今天8/2 又接到头条的电话了,说是被推荐到了其他岗位,好像被捞了一把额,感谢小姐姐不杀之恩,期待接下来的面试,来虐我吧,面试一次成长一点,血赚.  后面有时间补充被捞起来问的问题.....

第一道编程题:面试官在公屏左侧打了4个字 ---“1~n全排”   .

#include "iostream"
#include<vector>
using namespace std;

void permutation(int* a, int k, int m)
{
	int i, j;
	if (k == m)
	{
		for (i = 0; i <= m; i++)
			cout << a[i]<<endl; 
	}
	else
	{
		for (j = k; j <= m; j++)
		{
			swap(a[j], a[k]);
			permutation(a, k + 1, m);
			//printf("%d\n", k);
			swap(a[j], a[k]);
		}
	}
}
int main(void)
{
	int n;
	scanf("%d", &n);
	std:vector<int> vect;
	int arry[10];
	for (int i = 0; i <= n; i++) {
		vect.push_back(i+1);
		arry[i] = vect[i];
	}
	cout <<  "全排列如下" << endl;
	permutation(arry, 0, n-1);
	system("pause");
	return 0;
}

 

第二道题:  面试官写了2个字,“快排”.  

用python写快一些

def quickSort(arr, left, right):
    if left < right:
        p = partition(arr, left, right)
        quickSort(arr, left, p - 1)
        quickSort(arr, p + 1, right)

def partition(arr,left,right):
    key = arr[left]
    low = left
    high = right
    while low < high:
        while(low < high) and (arr[high] >= key):
            high-=1
        arr[low] = arr[high]
        while(low < high) and (arr[low] <= key):
            low+=1
        arr[high] = arr[low]
        arr[low] = key #左右"指针"相遇,key放到当前位置结束这一轮
    return low

a = [12,1231,4,124,124,12,41] 
quickSort(a,0,6)
print(a)

 

捞起来后问的问题:

3、我看到你简历你面用到了SVM,手推一下SVM吧.  

我说以2分类举例,先写硬间隔的。我还没写完,面试官就叫我住手了,估计是我字太丑了.

 

这个详细的推导在李航老师的《统计学习方法》、周志华老师的西瓜书里面有详细推导,硬间隔,软间隔都有.

面试官叫我别写了,然后问 SVM软间隔的KKT条件作用是什么?

答:我只记得是拉个朗日乘子法的推广,都是用于求有约束条件下的极值的,然后本着不懂就不要瞎bb的原则没敢继续说。 

面完下去查了一下:推荐https://www.zhihu.com/search?type=content&q=KKT%E6%9D%A1%E4%BB%B6  西工大王博的答案.

4、逻辑回归和线性回归说一下?

我:逻辑回归一般用于分类,输出一般是离散值,比如判断图片中是猫、不是猫这种.   线性回归输出一般是连续值,比如股票K线那种连续值,可以理解为 :  线性回归(连续值)后面接一个sigmoid映射到(0,1)作为概率,比如 >0,5 是猫,<0.5不是猫,也就是说变成了逻辑回归. 

问:比如你刚才说的,二分类逻辑回归一般用什么作为损失,线性回归呢?

我:二分类逻辑回归一般用交叉熵作为loss,线性回归可以用均方差作为loss.

5、20个头条研发岗的员工分4排站队,每排5个,HR从中任选4个人送他们一本 《算法之美》,那么这4个人在不同排的概率是多少?

答:5^4*4!/(A16 20)

6、fasterRcnn中anchor和feature map,anchor和原图的关系说一下

答:fasterRcnn中的anchor可以理解为空间金子塔SPP的逆向,在最后一层的特征图上用3x3的kernel滑动,3x3kernel的一个中心对应到输入网络原图像9个anchor的中心,最后经过roipooling 后分别做回归(bounding box)和分类(有物体还是没有物体). 

面试官: 怎么理解feature map对应到原图9个尺寸的anchor?

我:假如输入一张图是128*128*3的,经过卷积、池化、卷积、池化,假如最后下采样8倍,最后输出的是一个16*16的特征图(举例而已,没考虑channel数目),那么最后16*16区域的每一个像素对应的就是原图8x8的区域,因为下采样了8倍,anchor从feature map对应原图的anchor也可以这么理解.

7、面试官:优化算法中的牛顿法用过吗?

我:没有用过牛顿法,用过批梯度下降、随机梯度下降(SGD)、自适应梯度下降(Adam),没用过牛顿法做优化。

面试官: 牛顿法用了泰勒展开的前几项来近似求解方程的根,也是一种常用的优化算法中求最优解的方法,比Adam能更快的收敛。

我:好的,学习了,谢谢。

8、行,一面就聊到这吧,你有什么想问的?

我:你工作几年了?

面试官:刚满一年。

我:工资方便透露一下吗?

面试官:这个不方便说,只能告诉你不会低于25w一年.

我:好谢谢,我没有问题了。

面试官:那行,就到这吧.

附: 心态放好,本着学习的经验去面试的,祝bytedance越来越好!

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值