Momenta2019秋招技术岗笔试题

时长:120分钟 总分:98分

196浏览 0人已完成答题

题型介绍
题型 单选题 判断题 填空题 简答题
数量 2 3 12 20
1.
用 0 - 9 这 10 个数字组成一个首尾相连的字符串,每个数字可以重复...
问题详情

用 0 - 9 这 10 个数字组成一个首尾相连的字符串,每个数字可以重复出现多次,并且字符串中任意 2 个数字都相邻出现过。此字符串最小长度是()




2.
有 64 个节点的二叉树至少要有() 层
问题详情




3.
 在三角形ABC中,已知sinA = 10sinB * sinC...
问题详情

 在三角形ABC中,已知sinA = 10sinB * sinC, cosA = 10cosB * cosC, 那么tanA是()

4.
某车站每天 8:00--9:00,9:00--10:00,都恰有一辆客车到...
问题详情

某车站每天 8:00--9:00,9:00--10:00,都恰有一辆客车到站,但到站的时刻是随机的,且两者到站的时间是相互独立的,其规律为

到站时刻 8:00--9:10 8:30--9:30
8:50--9:50
概率


一旅客 8:20 到车站,则它候车时间的数学期望为()(精确到分).

5.
使不等式  对一切正整数 n  对...
问题详情

使不等式 799179luw.jpg 对一切正整数 n  对一切正整数  a 的值为()

6.
写出以下代码段的输出结果,并简述理由 void test(int x[5...
问题详情

写出以下代码段的输出结果,并简述理由

void test(int x[5]) {
    char
a[5][6]
    printf(“1.
%d”, sizeof(x))
    printf(“2.
%d”, sizeof(x[0]))
    printf(“3.
%d”, sizeof(a))
    printf(“4.
%d”, sizeof(a + 0))
    printf(“4.
%d”, sizeof(&a))
}

7.
用变量p给出下面的定义  a)一个指向指针的指针,它指向的...
问题详情

用变量p给出下面的定义 
a)一个指向指针的指针,它指向的指针是指向一个整型数的指针
 b) 一个有10个指针的数组,该指针是指向一个整型数的指针
 c) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
 d) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数 e) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
8.
设有k≥1堆硬币,各堆分别含有n1,n2...nk枚硬币。 游戏中两...
问题详情

设有k1堆硬币,各堆分别含有n1,n2...nk枚硬币。

游戏中两个人交替拿取硬币,每次只能从剩余硬币数大于0的其中一堆取走任意数量硬币(至少1枚,至多取完),取走最后一枚硬币的人取胜。在游戏双方均足够理智的情况下,给出先手必胜的条件。

9.
假如让你对总量为500G的文件(单个文件约为1M)进行去重,你会怎么做,简...
问题详情

假如让你对总量为500G的文件(单个文件约为1M)进行去重,你会怎么做,简述理由和考虑。

10.
假如让你对总量为500G的文件(单个文件约为1M)进行去重,你会怎么做,简...
问题详情

假如让你对总量为500G的文件(单个文件约为1M)进行去重,你会怎么做,简述理由和考虑。

11.
简述简单工厂模式、工厂模式、抽象工厂模式。
问题详情
12.
你有一套40张的卡牌,其中有若干张红牌,问至少有多少张红牌可以使得洗牌后,...
问题详情

你有一套40张的卡牌,其中有若干张红牌,问至少有多少张红牌可以使得洗牌后,顺序翻5张,出现两张红牌的概率大于80%,给出计算过程。
13.
有L升汽油,m块钱,有若干条路段,行驶完每条路段消耗1升汽油和c元路费,加...
问题详情

L升汽油,m块钱,有若干条路段,行驶完每条路段消耗1升汽油和c元路费,加油费每升g元,问最多可以开多少条路段?

14.
简述 join、inner join、outer join、left jo...
问题详情

简述 joininner joinouter joinleft joinright join 的区别。

15.
列举常见数据库的类型,并分别至少举出一个例子和至少一个connector(...
问题详情

列举常见数据库的类型,并分别至少举出一个例子和至少一个connector(不限编程语言)。

16.
写出以下代码段的输出结果,并简述理由。 setTimeout(()...
问题详情

写出以下代码段的输出结果,并简述理由。
setTimeout(() => {
  console.log(1)
}, 0)
new Promise((resolve) => {
  console.log(2)
  for( var i=0  i<1000000  i++ ) {
     i == 9999 && resolve()
  }
  console.log(3)
}).then(() => {
  console.log(4)
})
console.log(5)

17.
前端性能优化可以从哪些地方入手?怎么做?请简述。
问题详情
18.
写出以下代码段的输出结果,并简述理由。 void test(...
问题详情

写出以下代码段的输出结果,并简述理由。
void test(int x[5]) {
    char a[5][6]

    printf(“1. %d”, sizeof(x))
    printf(“2. %d”, sizeof(x[0]))
    printf(“3. %d”, sizeof(a))
    printf(“4. %d”, sizeof(a + 0))
    printf(“4. %d”, sizeof(&a))
}

19.
结合代码,解释C++的虚函数表。
问题详情
20.
在训练一个神经网络的时候存在多任务的情况,不同的任务有不同的loss函数表...
问题详情

在训练一个神经网络的时候存在多任务的情况,不同的任务有不同的loss函数表达式,请问要注意什么问题?如何解决这个问题?
21.
请对自己已经了解的一些主流的物体检测的算法们做一些分类,并同时写出你的分类标准。
问题详情
22.
请详细描述一下FasterRCNN训练RPN部分的输入输出极其对应含义,尽...
问题详情

请详细描述一下FasterRCNN训练RPN部分的输入输出极其对应含义,尽可能给出多的细节。

23.
写出NMS(Non-Maximum Suppression)算法的伪代码。
问题详情

写出NMS(Non-Maximum Suppression)算法的伪代码。

24.
给定两幅图像上匹配的特征点对x, x',写出匹配点对与两帧图像之...
问题详情

给定两幅图像上匹配的特征点对x, x',写出匹配点对与两帧图像之间的基础矩阵(fundamental matrix,以F表示)之间的关系,写出匹配点对与两帧图像之间的单应矩阵( Homography,以H表示)之间的关系。
25.
写出你对图像特征点的理解,一类或多类均可(如 ORB,SIFT&...
问题详情

写出你对图像特征点的理解,一类或多类均可(如 ORBSIFT 等)。
26.
交叉线
问题详情

M布置给小M一个题目:首先给出n个在横坐标上的点,然后连续的用半圆连接他们:首先连接第一个点与第二点(以第一个点和第二点作为半圆的直径)。然后连接第二个第三个点,直到第n个点。现在需要判定这些半圆是否相交了,在端点处相交不算半圆相交。如下图所示。

输入描述: 输入的第一行包含一个整数T (1 ≤ T ≤ 10)表示有T组样例。

每组样例的第一行是一个整数n (1≤n≤1000)。

接下来的一行输入有n个用空格隔开的不同的整数a1,a2,...,an (-1000000 ≤ ai ≤ 1000000),(ai,0)表示第i个点在横坐标的位置。输入样例: 2 4 0 10 5 15 4 0 15 5 10 输出描述: 对于每个输入文件,输出T行。

每行输出&quoty"表示这些半圆有相交或者&quotn"。输出样例 y n
27.
队列得分
问题详情

M和大M要通过选择元素组成队列进行得分pk。目前存在队列S1,S2,S3...Sn,每个元素包括2个正整数属性setvalue.从中选出任意K个元素S[i1],S[i2]...S[ik],保证顺序不变即i1 < i2 < i3< ... < ik,组成新的队列P1,P2,P3......Pk.我们通过一个机制评价队列的好坏:

Base=P1.value+P2.value+...Pk.value,

Bonus=10*tt为新队列中Pi.set=P(i+1).seti个数.

最终得分Score=Base-BonusScore的最大值和取最大值时新队列元素个数的最小值.

输入描述: 第一行包含一个数N(0 < N <= 500)

接下来N行每一行两个数表示S1,S2,...,Sn的set和value值 (0 < set,value <= 20)输入样例: 5 1 10 1 5 2 4 3 9 4 8 输出描述: Score的最大值和新队列元素个数的最小值输出样例 31 4
28.
怪数
问题详情

M突然对怪数产生了兴趣。假设一个数n,如果[n/1]+[n/2]+...+[n/k](k为趋近于正无穷的正整数)为一个偶数,那么这个数是一个怪数,现在给定一个区间[a,b],求[a,b]之间有多少怪数。

[x]表示不大于x的最大整数。

输入描述: 输入只包含一行,有两个非负整数a,b(0<=a,b<=2^31,a<=b)。输入样例: 0 10 输出描述: 输出区间[a,b]中的怪数的个数。输出样例 6
29.
大家来扫雷
问题详情

M最近爱上了扫雷游戏,就是在一个n*m的区域中,有地雷,每一个方格上都有一个数字s,表示在这个方格周围有s颗雷,现在给你一张表明地雷的图,并且指定一个位置点开,请输出点开后的数字情况,若点开的地方的数字为0,则向该方格周围扩展,直到遇到数字或者地图边界为止,若点开的地方为地雷,那么直接输出"GG"

周围指的是上,左上,左,左下,下,右下,右,右上八个方向。

输入描述: 第一行有两个数字n和m(2<=n,m<=1000),表示地图的大小,第二行有两个整数x和y(1<=x<=n,1<=y<=m),表示点击第x行y列的方格,接下来的是一个n行m列的一个矩阵,表示地图,其中.表示空地,*表示地雷。输入样例: 3 4 1 1 .... ..*. .... 输出描述: 如果点开的地方为地雷直接输出"GG"。否则输出点击指定位置后的地图,"."表示未点开的空地,"*"表示地雷,数字表示在该方格周围的地雷数目。输出样例 01.. 01*. 01..
30.
中位数
问题详情

M给你一个长度为n的数组,我们定义median数为该数组从小到大排序后,下标为(n-1)/2的数字。下标从0开始,(n-1)/2表示整数除法,即向下取整。现在我们已经得到了一个初始的数组,我们希望这个数组的median数是一个给定数字x。所以我们需要加入一些数到数组中从而完成我们的目标。数组中的元素可以重复,请问,最少需要加入多少个数字才能达成这个目标。

输入描述: 第一行输入两个整数n x (1 <= n <= 500, 1 <= x <= 10^5)。

接下来一行有n个正整数表示初始的数组,用空格分开,范围是[1, 10^5]。输入样例: 3 2 2 3 4 输出描述: 输出需要加入最少的元素个数才能够使得新数组的median数成为x。输出样例 1
31.
k倍多重正整数集合
问题详情

k倍多重正整数集合的定义是:在一个多重集合(元素可以重复)中,不存在一个正整数是另一个正整数的k倍。

现在小Mn个正整数,你可以选择其中一些数构成k倍多重正整数集合。请求出最多能选出多少数来构成它。

输入描述: 第一行有两个整数n, k(1 <= n <= 10^5, 1 <= k <= 10^9)。

接下来一行有n个正整数a1, a2, ..., an (1 <= ai <= 10^9)。输入样例: 6 2 2 3 6 5 4 10 输出描述: 最多能选出多少数构成k倍多重正整数集合。输出样例 3
32.
连续子区间和
问题详情

M给你一串含有c个正整数的数组, 想让你帮忙求出有多少个下标的连续区间, 它们的和大于等于x

输入描述: 第一行两个整数c x(0 < c <= 1000000, 0 <= x <= 100000000)

第二行有c个正整数(每个正整数小于等于100)。输入样例: 3 6 2 4 7 输出描述: 输出一个整数,表示所求的个数。输出样例 4
33.
交换查询
问题详情

M有一个N*M的方格,行列下标均从0开始。其中有K个方格中有数字,表示为(X, Y)方格中有数字C。对方格有2种操作,交换方格的两行或者交换方格的两列。

M希望随时能够知道在经过一系列交换之后某一方格中是否含有数字,并且如果有的话,数字是多少。

输入描述: 输入数据第一行包含3个整数N, M, K。表示N行M列的方格,并且其中K个方格有数字。
(1 <= N, M <= 10^5, 0 <= K <= 10^5)
接下来K行,每行有3个整数,X, Y, C,表示(X,Y)方格中有数字C。
(0 <= X <= N - 1, 0 <= Y <= M - 1, 1 <= C <= 1000)
接下来有一个整数T,表示有T次操作或询问。(0 <= T <= 10^5)
接下来T行,买行有三个整数Q, A, B。
当Q == 0时,交换行A和行B所有方格。
当Q == 1时,交换列A和列B所有方格。
当Q == 2时,询问(A, B)是否有数字,如果有则输出该数字,如果没有输出-1。
数据保证Q,A,B均在合法的范围之内。输入样例: 3 3 2 1 1 1 2 2 2 5 2 1 1 0 0 1 1 0 1 2 1 1 2 2 2 输出描述: 对于每个询问,输出一个整数表示其答案。输出样例 1 -1 2
34.
大数乘法
问题详情

实现大数乘法,输入是两个字符串如
n1 = '340282366920938463463374607431768211456'
n2 = '340282366920938463463374607431768211456'
输出
'115792089237316195423570985008687907853269984665640564039457584007913129639936'
要求:不能使用对大数相乘有内建支持的语言;需要包含对输入字符串的合法性校验 输入描述: 一行,两个非负整数n1,n2,保证|n1|+|n2|<10000,其中|n|是n作为字符串的长度输入样例: 340282366920938463463374607431768211456 340282366920938463463374607431768211456 输出描述: 输出n1*n2的结果输出样例 115792089237316195423570985008687907853269984665640564039457584007913129639936
35.
中缀表达式转后缀表达式
问题详情

将中缀表达式转为后缀表达式,输入 a+b*c/d-a+f/b 输出 abc*d/+a-fb/+
要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 +-*/,按照四则运算顺序确定优先级,不包含括号 输入描述: 一个字符串为合法的中缀表达式
字符串长度不超过200000输入样例: a+b*c/d-a+f/b 输出描述: 对应的后缀表达式输出样例 abc*d/+a-fb/+
36.
最小栈
问题详情

实现一个最小栈,有三种操作,min:得到栈中的最小值,push:在栈顶插入一个元素,pop:弹出栈顶元素,使这三种操作的时间复杂度都是O(1)
要求:语言不限 输入描述: 第一行是一个数Q,接下来Q行每行表示一个操作,每行首先是操作op
若op==0,则输出当前栈中的最小值;
若op==1,表示push,接着正整数x,把在x放进栈顶;
若op==2,表示pop,弹出栈顶元素
保证Q<=500000,保证op==0或2时(即min操作和pop操作时)栈不为空。
你可以假设一开始栈的空的。输入样例: 7 1 3 1 4 0 1 2 0 2 0 输出描述: 对应每个op==0或2,如果是op==0输出当前栈中的最小值,如果是op==2输出弹出的元素。输出样例 3 2 2 3
37.
二叉搜索树判定
问题详情

给定一个二叉树,判断其是否是一个有效的二叉搜索树。
假设一个二叉搜索树具有如下特征:
节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。
所有左子树和右子树自身必须也是二叉搜索树。
例如:
输入:
    5
   / \
  1   3
     / \
    4   6
输出: false
二叉树节点定义如下,如果使用其他语言,其二叉树节点定义类似:
/**
 * C++
 * struct TreeNode {
 *     int val
 *     TreeNode *left
 *     TreeNode *right
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * }
 */
 
# Python
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
 
/**
 * Go
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
输入描述: 第一行两个数n,root,分别表示二叉树有n个节点,第root个节点时二叉树的根
接下来共n行,第i行三个数val_i,left_i,right_i,分别表示第i个节点的值val是val_i,左儿子left是第left_i个节点,右儿子right是第right_i个节点。
节点0表示空。
1<=n<=100000,保证是合法的二叉树输入样例: 5 1 5 2 3 1 0 0 3 4 5 4 0 0 6 0 0 输出描述: 输出"true"如果给定二叉树是二叉搜索树,否则输出"false"输出样例 false