腾讯2021实习生招聘-技术研究和数据分析笔试凉经

腾讯实习笔试,无论什么岗位都会给3次笔试机会(有些岗位无笔试),取最近一次的考试成绩,可以选择不参加,但作为简历筛选的重要指标,建议至少有一个成绩(谁知道呢,HR小姐姐说的- -)

  • 题型:五道编程题,全部是牛客网的ACM模式,即全程手撕代码,需要自己处理代码的输入与输出
  • 难度:噩梦级(自认为是所有企业里技术类实习笔试最难的,其他大厂至少还会出几道选择题给你点自信,QaQ)
  • 语言:你知道的所有通用化的计算机语言都可以

我个人建议使用语言c++/python,原因:速度快,会c++最好用C吧,毕竟快如一道闪电,很多题你没其他思路只能暴力求解,这对于语言的底层速度有着极大的考验,我自己用的Python(不建议用R,因为输入输出均要求为字符串,用R处理个人认为极不方便,且速度比python慢得多得多,在这方面python真香,正经人谁用R啊~)

  • 小经验:我已考了三次,直接去世那种,不过虽然笔试很难,但是每次的5道题中必有一道数学题(确信!!),即几何代数微积分的题目(套着编程的外套的数学题),对于我们这样的理科生必做啊,毕竟其他的题咱这样的编程小白基本都是白给...

下面为此次考试的题目,请各位食用(建议自备呕吐袋!)

  1. 给你一个序列,共n个数,以及另外m个单独的数ai,i=1,2,...m
    对于每个ai,查看序列中是否有两个数的差与ai相等,若有输出任意满足条件的两个数,若无输出“-1 -1”

我觉得这题难度中等,可以看懂... 所以我用暴力法接了,但算法复杂度还是太高,超时了,只过了56%,凉了 QaQ

t = [int(x) for x in input().strip().split()]
n = t[0]
m = t[1]
ji = set()
shu = [int(x) for x in input().strip().split()]
for j in range(n - 1):
    wei = j + 1
    for k in range(n - wei):
        ab = abs(shu[j + k + 1] - shu[j])
        if ab not in ji:
            ji.add(ab)
for i in range(m):
    w = int(input().strip())
    kan = 0
    if w not in ji:
        print("-1 -1")
    else:
        for j in range(n - 1):
            wei = j + 1
            if kan == 1:
                break
            for k in range(n - wei):
                ab = abs(shu[j + k + 1] - shu[j])
                if ab == w:
                    print(shu[j + k + 1], shu[j], sep=" ")
                    kan = 1
                    break
  1. 给你两个只包含小写字母的字符串,有m个问题,对于每个问题会先对这两个字符串的前部(给位置t1,t2)进行切片,然后问你这两个切片后的字符串的“再切片字符串”中满足特定条件之一的字符串组的长度之和最大为多少,要求第二次再切片字符串长度不为0?条件为:1.第一个再切片字符串长度为0,即切没了 2.第一个再切片字符串的首字母在字典序的意义下小于第二个再切片字符串的首字母。

emm...这题看了半天算是看懂了,解也解出来了一点,但只过了18%的样例,不知道错在哪,请大家指正

s = input().strip()
p = input().strip()
n = int(input().strip())
for i in range(n):
    t = [int(x) for x in input().strip().split()]
    s_1 = s[t[0]-1:]
    t_1 = p[t[1]-1:]
    ji = set()
    min = len(t_1)
    ji.add(min)
    for j in range(len(s_1)):
        chang_z = len(s_1[j:]) + len(t_1)
        if chang_z <= max(ji):
            continue
        else:
            for k in range(len(t_1) - 1):
                if s_1[j:][0] < t_1[k:][0]:
                    ji.add(len(s_1[j:]) + len(t_1[k:]))
                    break
    print(max(ji))
  1. 没错这题就是那个之前提到的那道数学题,我就不过多赘述了,大概意思是给你个圆心图片说明 和半径图片说明 ,再给你一个在这个圆内的但不与圆心重合的一个点图片说明 ,以这个点为端点,连接圆心,作一条射线,交圆周于一点 ,然后让你求以这个交点 和图片说明为直径的圆的圆心图片说明 和半径图片说明

以下给出我的代码,但是它只过了70%???我觉得没毛病啊,好吧,估计TX是整了一些幺蛾子,这下彻底凉透了!qaq

t = [float(x) for x in input().strip().split()]
r_1 = t[0]
x_1 = t[1]
y_1 = t[2]
x_3 = t[3]
y_3 = t[4]
d = ((x_1-x_3)**2+(y_1-y_3)**2)**0.5
r_2 = (d + r_1) / 2
if x_1 == x_3:
    x_2 = x_1
    if y_3 < y_1:
        y_2 = y_3 + (r_1+d)/2
    else:
        y_2 = y_1 - (r_1 + d) / 2
elif x_1 < x_3:
    x = r_1 * (x_3 - x_1) / d
    x_2 = x_3 - (x + x_3 - x_1) / 2
    y_2 = y_1 + ((y_3 - y_1) / (x_3 - x_1)) * (x_2 - x_1)
else:
    x = r_1 * (x_1 - x_3) / d
    x_2 = x_3 + (x + x_1 - x_3) / 2
    y_2 = y_1 + ((y_3 - y_1) / (x_3 - x_1)) * (x_2 - x_1)
print(x_2, y_2, r_2, sep=" ")
  1. 好了,变态的来了,这题考了一道我看不懂的,大概意思是给你平面上n个点,然后让你找出他们所有dfs遍历序列中的在字典序意义下的最小序列。好吧,我可能表述不清,但我知道考点必定在dfs遍历,这个咱么听过啊,我刚百度了一下,这真没学过,咱认了...

  2. 这题很短,n双鞋,每次从中抽2只鞋,分给n个人,问:能刚好分到左脚的鞋和右脚的鞋都有的人的数量的期望

    omg~,人狠话不多,当场去世,这我很难看不懂,但却又无从下手...我觉得这题应该是要用递归?但我没时间了,就没做,看大家有没有什么解法...

全部评论

相关推荐

秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++&nbsp;&amp;&nbsp;Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目。主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位。从8月起总共投递123家公司,笔试数不清了,约面大约30家。offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送(限男生),不...
乡土丁真真:佬很厉害,羡慕~虽然我还没有到校招的时候,也想讲一下自己的看法:我觉得不是CPP的问题,佬的背书双2,技术栈加了GO,有两段实习。投了123,面了30.拿到11个offer。这个数据已经很耀眼了。这不也是CPP带来的吗?当然也不止是CPP。至少来说在这个方向努力过的也会有好的结果和选择。同等学历和项目选java就会有更好的吗?我个人持疑问态度。当然CPP在方向选择上确实让人头大,但是我觉得能上岸,至于最后做什么方向,在我看来并不重要。至于CPP特殊,有岗位方向的随机性,java不是不挑方向,只是没得选而已。也希望自己以后校招的时候能offer满满
点赞 评论 收藏
分享
我在朝九晚六双休的联想等你:如果我是你,身体素质好我会去参军,然后走士兵计划考研211只需要200多分。
点赞 评论 收藏
分享
评论
2
8
分享
牛客网
牛客企业服务