当前位置:网站首页>阿里腾讯面试一二
阿里腾讯面试一二
2022-08-01 09:35:00 【51CTO】
关于腾讯群面:
非技术岗的第一面是群面,无领导小组,6个人一组。一开始签到后就分好组了,一般都是不同学校的,有中大、华工这些名校也有我们普通本科,在候场时候就和组员聊一聊,结合自己性格特点做好分工,具体分工大概有3个角色,leader,时间控制者和总结者。一般带表的同学做Timer有优势点。进入会议室开始面试后,留给大家发题目。
2分钟看题目后,开始是30秒介绍!!!30秒介绍!!!30秒介绍!!!(重要三)介绍很短,你们要在提前准备好,切记不要多介绍多个辉煌事迹,只要讲一个与岗位相关的重点就好了(只是介绍自己最牛逼的事和特点)。然后开始讨论话题,我的话题是设计一个微信支付的应用场景,要求短时间内提高用户使用数量。但是我们组做的不好,3大原因:1.没有明显的Leader,只有一个华工的研究生学姐在领导大家讨论,但是逻辑不清楚,讨论得很混乱;2.Timer没做好,我本来就想做时间控制者但是我没做好分配时间,大家最后8分钟才确定应用场景,只有5分钟讨论问题和解决方案,不够全面。我的建议是大家提前去了解下微信QQ等社交产品,思考一些应用场景,这样讨论时候心理有低。一般如果你提出这个场景很好,无形中就可以成为Leader或者总结者,所以生活中多思考!3.讨论过程中没有强势的组员。我们组员讨论过程中有矛盾,但是大家都搁置矛盾,没有人坚持自己的想法,有不同意见就换了想法,大家都很友好。这一点面试官和我特别说了,这种情况很不好,必须有一些同学把自己的想法支持到最后。最后的结果是我们组只有总结的那个女生(同时也是她提出了大家认可的应用场景)进入了下一轮。
阿里巴巴算法、数据工程师笔试题选解
1、有三个结点的,可以构成多少个种叉树?
2、一副牌52张(去掉大小王),从中抽取两张牌,一红一黑的概率是多少?
编程题:
3、设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。情特别注意优化时间复杂度的常数。
4、已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:
Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|)
请设计一个求最小三元组距离的最优算法,并分析时间复杂度。
5、在黑板上写下50个数字:1至50.在接下来的49轮操作中,每次做如下动作:选取两个黑板上的数字a和b,擦去,在黑板上写|b – a|。请问最后一次动作之后剩下数字可能是什么?为什么?
题解:(题解非官方,仅供参考,有错误的地方望指正!谢谢)
1、有三个结点的,可以构成多少个种树形结构?
解:应该是5种;
2、一副牌52张(去掉大小王),从中抽取两张牌,一红一黑的概率是多少?
考察概率论知识
解法一: 52张牌从中抽两张,就是 C(2,52)种情况,一红一黑是C(1,26) * C(1,26)种
P = [C(1,26) * C(1,26) ] / C(2,52) = 26 * 26 / (26 * 51) = 26/51
解法二: 全为黑或者全为红是C(2,26)种情况,由于是黑和红两种,所以要乘以2
P = 1 – C(2,26) / C(2,52) – C(2,26) / C(2,52) = 1 – 2 * (26 * 25)/(51 * 52) = 1 – 25/51 = 26/51
3、设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。情特别注意优化时间复杂度的常数。
解:把数组两两一对分组,如果数组元素个数为奇数,就最后单独分一个,然后分别对每一组的两个数比较,把小的放在左边,大的放在右边,这样遍历下来,总共比较的次数是 N/2 次;在前面分组的基础上,那么可以得到结论,最小值一定在每一组的左边部分找,最大值一定在数组的右边部分找,最大值和最小值的查找分别需要比较N/2 次和N/2 次;这样就可以找到最大值和最小值了,比较的次数为
N/2 * 3 = (3N)/2 次
如图会更加清晰:
代码实现:
4、已知三个升序整数数组a[l], b[m]和c[n]。请在三个数组中各找一个元素,是的组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:
Distance = max(|a[ I ] – b[ j ]|, |a[ I ] – c[ k ]|, |b[ j ] – c[ k ]|)
请设计一个求最小三元组距离的最优算法,并分析时间复杂度。
解:这道题目有两个关键点:
第一个关键点: max{|x1-x2|,|y1-y2|} =(|x1+y1-x2-y2|+|x1-y1-(x2-y2)|)/2 –公式(1)
我们假设x1=a[ i ],x2=b[ j ],x3=c[ k ],则
Distance = max(|x1 – x2|, |x1 – x3|, |x2 – x3|) = max( max(|x1 – x2|, |x1 – x3|) , |x2 – x3|) –公式(2)
根据公式(1),max(|x1 – x2|, |x1 – x3|) = 1/2 ( |2x1 – x2– x3| + |x2 – x3|),带入公式(2),得到
Distance = max( 1/2 ( |2x1 – x2– x3| + |x2 – x3|) , |x2 – x3| )
=1/2 * max( |2x1 – x2– x3| , |x2 – x3| ) + 1/2*|x2 – x3| //把相同部分1/2*|x2 – x3|分离出来
=1/2 * max( |2x1 – (x2 + x3)| , |x2 – x3| ) + 1/2*|x2 – x3| //把(x2 + x3)看成一个整体,使用公式(1)
=1/2 * 1/2 *((|2x1 – 2x2| + |2x1 – 2x3|) + 1/2*|x2 – x3|
=1/2 *|x1 – x2| + 1/2 * |x1 – x3| + 1/2*|x2 – x3|
=1/2 *(|x1 – x2| + |x1 – x3| + |x2 – x3|) //求出来了等价公式,完毕!
第二个关键点:如何找到(|x1 – x2| + |x1 – x3| + |x2 – x3|) 的最小值,x1,x2,x3,分别是三个数组中的任意一个数,这一题,我只是做到了上面的推导,后面的算法设计是由csdn上的两个朋友想出来的方法,他们的CSDN的ID分别为 “云梦泽” 和 “shuyechengying ”.
算法思想是:
用三个指针分别指向a,b,c中最小的数,计算一次他们最大距离的Distance ,然后在移动三个数中较小的数组指针,再计算一次,每次移动一个,直到其中一个数组结束为止,最慢(l+ m + n)次,复杂度为O(l+ m + n)
代码如下:
边栏推荐
- BGP综合实验
- Manual upgrade and optimization tutorial of Lsky Pro Enterprise Edition
- 解析MySQL数据库:“SQL优化”与“索引优化”
- STM32个人笔记-嵌入式C语言优化
- Naive Bayes--Study Notes--Basic Principles and Code Implementation
- Shell:条件测试操作
- Yang Hui Triangle (C language implementation)
- 18张图,直观理解神经网络、流形和拓扑
- 基于CAP组件实现补偿事务与消息幂等性
- TiDB的真实数据库数据是存在kv和还是pd上?
猜你喜欢
随机推荐
Is the real database data of TiDB stored in kv and pd?
笔记。。。。
Optimal dazzle Oracle database support what kinds of type of the time and date
会议OA(待开会议&所有会议)
Classify GBase 8 s lock
企业微信群:机器人定时提醒功能数据库配置化
Pod environment variables and initContainer
BGP综合实验
网络个各种协议
How to ensure the consistency of database and cache data?
Lsky Pro 企业版手动升级、优化教程
How to implement deep copy in js?
How to query database configuration parameters in GBase 8c, such as datestyle
STM32个人笔记-嵌入式C语言优化
notes....
Naive Bayes--Study Notes--Basic Principles and Code Implementation
MySQL query advanced - from the use of functions to table joins, do you remember?
network basic learning
ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API
AC与瘦AP的WLAN组网实验