本文整理网上的大厂笔试题。主要是让读者可以感受一下各个厂的笔试难度!
如有侵权,请私信删除!

一、阿里巴巴

阿里的笔试在2022年春招开始包含单选、多选、3道算法题。
在此之前,阿里的笔试一般仅包含2道算法题。

1. 2022最新阿里实习笔试试题

单选

  1. 在Shell编程中,判断expr1是否小于expr2,若小于结果为真,下面写法正确的是?
  • expr1 -gt expr2
  • expr1 -lt expr2
  • expr1 -eq expr2
  • expr1 -ne expr2

对一组关键字序列{36,72,83,21,12}进行排序,关键字的具体排序过程的次序变化如下所示,则采用的排序方式为?
(1){36,72,83,21,12}
(2){36,72,21,12,83}
(3){36,21,12,72,83}
(4){21,12,36,72,83}

  • 冒泡排序
  • 简单选择排序
  • 快速排序
  • 直接插入排序

下列属于缓存未命中的原因是?
I、进行查询的语句无法缓存
II、查询语句未被执行
|||、内存溢出
IV、缓存失效操作过多

  • I、II、III、IV
  • I、II、IV
  • II、III、IV
  • III、IV

下列关于SQL优化的选项,说法错误的是?

  • 在MySQL中,使用多张表关联进行查询时,表A有一千万条数据,表B有一万条数据,应当将表B放在前面,表A放在后面。
  • SELECT * FROM TABLE WHERE niuniu / 2 = 5和SELECT * FROM TABLE WHERE niuniu = 5*2两个语句,前者将更高效。
  • 在MySQL中,应当尽量使用WHERE而不是HAVING语句。
  • 在MySQL中,使用多个条件通过WHERE查询时,应该按照过滤数量的多少放置条件,过滤数量大的条件放在语句中的更前面。

对于所有的4位数,牛牛想知道有多少个数字有偶数个1,如1122就是拥有偶数个1的4位数。

  • 6292
  • 6291
  • 73
  • 72

不定项

已知有向图G邻接表表示法如图所示,下列选项中是从顶点V1开始的广度优先搜索遍历序列的有()> > 在这里插入图片描述

  • V1->V2->V4->V6->V3->V5->V7->V8
  • V1->V2->V3->V8->V5->V7->V4->V6
  • V1->V2->V4->V6->V7->V3->V5->V8
  • V1->V6->V2->V4->V7->V3->V5->V8

下列关于TCP字节流说法正确的是?

  • TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流
  • TCP中的“流”指的是流入到进程或从进程流出的字符序列
  • 接收方从缓存中读取
  • TCP并不知道所传送的字节流的含义

某系统中有3个进程P1,P2,P3,各自进入进程的时间和所需运行的时间如下,下列选项中正确的是
在这里插入图片描述

  • 按FCFS调度,上述三个作业的平均周转时间为7
  • SJF的进程调度顺序为P1、P3、P2
  • 按FCFS调度,上述三个作业的平均带权周转时间为5
  • 如果在加载时间2时有进程P4(运行时间为4)加入到进程等待序列,则按SJF的进程调度顺序为P1、P4、P3、P2

假设带头节点的循环单链表的长度为n,头节点指针为front,尾节点指针为rear,则下列说法正确的是?

  • 在链表头节点后插入一个节点s的操作为s->next=front->next, front->next=s
  • 在链表尾节点后插入一个节点的时间复杂度为O(1)
  • 删除链表中的第i个节点的时间复杂度为O(n)
  • 该链表可用作循环队列

当前系统中有四个进程集合,系统中的资源分配和最大需求如下表所示,当剩余资源数A、B、C取下列哪些值时,系统处于安全状态?
剩余可用资源A、B、c
在这里插入图片描述

  • 2,1,0
  • 1,1,1
  • 0,1,1
  • 1,0,1

算法题

题目描述
牛牛发现了一种奇怪的物质,这种材料的晶体保持规则的多边形,时间毎经过1秒,每边的晶体数量增加1个。第一个晶体在第0秒时制成。该材料的晶体块由若干单位晶体组成(也即图中的小圆).
现在,给出增加品体尺寸的规则:

  • 始终保持规则的正A边形,正A边形是有 A 条边且毎条边上的单位晶体数目相等.
  • 每经过1秒,晶体块就会在外侧增加最少个数的单位晶体使得其毎个边上的单位晶体数目都增加 1,并保持正A边形的形状。(具体请看图示,蓝色是当前晶体,黄色是最少增加的晶体)

现在,牛牛 n 个晶体块。牛牛想知道,这些品体块一共有多少个”单位晶体?请你编写一个程序来告诉牛牛吧。

输入描述:
第一行给出一个正整数 n ,代表晶体块的数量。
接下来的n行,每行输入两个整数A和 B 。A表示晶体的形状是A边的正多边形, B 表示该晶体的生长时间为 B 秒。
1≤ n ≤10^3
3 ≤ A ≤ 100
0 ≤ B ≤ 100

输出横述:
输出构成这个晶体块的”单位晶体”的数量。
示例一
输入
2
3 4
5 3
输出
37
示例二
输入
2
10 11
99 88
输出
380481

题目描述
牛牛在纸上画了一个正 n 边形,他想知道多边形中等腰锐角三角形的数量。(三角形的顶点要在多边形的顶点上)
不同的三角形的定义:两个三角形,只要有一个点不在同一个位置上就算做不同的三角形。
等腰锐角三角形的定义:顶角是锐角的等腰三角形被称为等腰锐角三角形。
输入描述:
输入行有一行,包含一个整数 n ,为正多边形的边数。
3≤ n ≤10^7
输出描述:
输出行有一行,包含一个整数,表示正多边形中等腰三角形的数量。
示例1
输入
3
输出
1
示例2
输入
4
输出
0

题目描述
小红最近爱上了扫雷游戏。
所谓扫置游戏的规则是这样:给定一个 n * m 的矩阵,每个位置有可能是地雷。如果点击了ー个地雷,那么直接被炸死,游戏结束。如果点击的一个位置不是地雷,那么将显示该子周围8个格子中地雷数量的总和
周围8个格子的定义:对于一个点(x,y),其周围8个格子的坐标为(x+i,y+j),其中﹣1≤ i,j ≤1.
现在小红拿到了一个4*4的矩阵,其中有一些位置已经被翻开。小红想知道,根据现有的信息,有哪些位置一定是雷,有哪些位置一定不是雷?小红希望你能把地图标记上。
输入插述:
输入4行,每行是一个长度为4的字行串。
其中字符"。"代表该位需的情况未知。
字符是数字代表该位置不是雷,且表示周围点的雷数量。
保证给定的地图一定合法。
输出插述:
对于一个确定的格子,如果是雷则标记为’X’,不是雷则标记为’O’ 。
不确定的格子保留字行"。",已经确定的数字也按数字输出。
示例1
输入
。。。。
。。8 。
。。。。
。。。。
输出
。X X X
。X 8 X
。X X X
。。。。
示例2
输入
。1 2 1
。。。。
。。。。
。。。。
输出
O 1 2 1
O X O X
。。。。
。。。。

1. 2021阿里实习笔试试题

题目描述
小明现在有 n 卡牌,毎一副卡牌里有 m 张牌,分别编号为1到 m ,现在想让你从这n副卡牌中,每一副抽出一张,使得选出来的卡牌编号相加加之和恰好为k,问你有多少种选择方案,由于答室很大,请你对10^9 + 7取余。
输入描述
每一个文件输入第一行输入一个整数T(1≤T≤3000),代表有组测试数据
接下来T组,每一组第一行输入三个整数 n , m , k(1≤n, m≤30,1≤k≤10^3)
输出描述
对于每一组测试数据,输出一个答案代表方案数量。
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
2
1 6 3
2 6 7
输出
1
6
说明
对于样例第一组,只有一副卡牌,所以答案为1
对于样例第二组,可能的组合方式为(1,6),(2,5),(3,4),(4,3),(5,2),(6,1)

题目描述:最近工厂准备采购一批零件,总共有 n 个零件。毎个零件都可以针对系统的空间和时间进行优化,但是只能够选择优化空问和时时间中的一个,不能两个同时优化时间与空间。零件可以组合使用,但是零件之问也有冲突关系的存在,总共有 m 条冲突关系,有冲突关系的零件不能组合使用。一个零件可以与和该零件没有冲突关系的一起组合对系统进行优化,空问和时间的优化也只能由一个零件完成,不能两个零件都进行空间优化或者都进行时间优化(即这个组合中,必须一个零件对系统的空间进行优化,另外一个对时间进行优化)。所有零件对于系统时问和空间上的优化效果相同。但是优化后会对系统的稳定性造成影响。用不稳定值用来描述对于系统的稳定性影响。(不稳定值有正有负,负数表示增强了系统的稳定性。),需要将对于系统的总的不稳定值越小越好。例如 i 零件,对于时间的优化会带来 a[ i ] 的不稳定值,对于空问的优化会带来b[ i ]的不稳定值,你能算出来在最优情况下每个零件与所有能够组合的零件组合后的给系统帯来不稳定值的总和吗?
输入描述

  • 第一行包含两个整数 n , m (1≤n≤100000,0≤m≤100000),表示零件数量和冲实关系数量。
  • 接下来的 n 行中的每行包含两个整数 a[ i ] 和 b[i] (-100000≤a≤100000,-100000≤ b[i] ≤100000),第 i 个零件在时间和空间对系统带来的不稳定值。
  • 接下来的 m 行中的每行都包含两个整数u[ i ]和 v[ i ] (1≤u[ i ], v[ i ]≤n,u[ i ] != v[ i ]),表示带有冲实关系零件的索引。

输出插述
输出一行包括 n 个整数,第 i 个整为包含第 i 个零件的不同组合对系统造成的不稳定性的最小值之和。
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
5 3
-1 3
2 4
1 1
3 5
2 2
1 4
2 3
3 5
输出
4 14 4 16 10

二、华为

1. 2021华为某次笔试真题

华为笔试一般为3道算法题,难度递增。三道题的分数分别为100,200,300,总分600分。

  • 第一题

题目描述
幼儿园老师安排小朋友做游戏,现在需要给 N 个小朋友进行分姐,老师让每个同学写一个名字,代表这位小明友想和谁分到一组,请问老师在满足所有小明友意愿的情况下,最多可以将班级分成多少姐?
输入描述:
第一行输入 N ,0≤N≤100000
接下来是 N 行代表每个小朋友希望和谁分到一组,如" John Jack ”,代表 John 希望和 Jack 分到一组,两个名字之间以空格分割,各字本身不存在空格。
输出描述
分组的最多数量
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
6
Jack Tom
Aice John
Jessica Leonie
Tom Alice
John Jack
Leonie Jessica
输出
2
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3
Xiaoming Xiaohong
Xiaohong Xiaoqiang
Xiaoqiang Xiaoming
输出
1
备注
名字是由大小写字母或数字构成的字符串,0< 名字长度 ≤ 20

  • 第二题

题目描述
给定 N 个任务(1≤N≤100),任务编号从0开始顺序累加,这 N 个任务在系统中排队顺序执行,每个任务的自身执行时问为非负整数,依次为t1、t2、tn。部分任务之间存在依赖关系的。某任务所依赖的任务如果没有执行,则该任务需要重回队尾重新排队。只有任务执行以及任务排队等待会消耗时间,其余操作消耗时间忽略不计。请计算每个任务的实际执行时间(实际执行时间=任务自身执行的间+在队列中等待其他任务执行的时间)
输入描述
第ー行编入按照任务编号递增的顺序表示N个任务的自身执行时间,为逗号分隔的字行串,执行时间取值范国[1,999]。例如:1,3,4(逗号前后没有空格),表标一共3个任务,每个任务的自身执行时间分别内1,3,4
第二行插入表际任务之间的依赖关系,为逗号分隔的字符串,每个依赖关系都表明了两个任务编号之间的依赖关系,例如:0->2(逗号前后没有空格),表示有一个依赖关系,编号为0号任务的执行,依赖于编号为2号任务的执行,注意一个任务可以依赖多个任务的执行,在这种情况下,需要其依赖的任务全部执行完成,才能执行此任务。
输出描述
按照任务编号递增的顺序,输出每个任务的实际执行时间,以逗号分隔,逗号前后不要空格,例如:8,3,7
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
1,3,4
0->2
输出
8,3,7
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
1,3,4,5,8,5,3,6
0->2,2->4,2->6
输出
35,3,34,8,16,21,24,30

  • 第三题

题目描述
到香港旅游,最后一站决定去迪士尼乐园打卡,因为返程机票已经订好,所以我们必须在剩余可游玩时t分钟内完成游玩,才能不耽误行程,请你为我们设计一条最佳游玩线路,选择规则如下:

  1. 游玩总时长不超过t,但最接近t
  2. 游玩时不想走回头路,仅向右或向下两个方向,畅玩到出口

乐园被划分为一个row*col的方格区域地图,在毎个方格区域上,标注了游玩的最佳时长,从入园口[0, 0]出发,选定最佳游玩线路,一路畅玩到出口[row-1, col -1]。
输入描述
首行输入以单个空格分割的三个正整数row(0<row ≤13)和col(0<col ≤13)以及t(0<t ≤600),row代表地图行数,col代表地图列数,t代表剩余可游玩时间
接下来row行,每一行包含col个以单个空格分割的数字,代表该方格区域最佳游玩时长time(0<time ≤100)分钟
输出描述
最佳游玩线路游玩总时长,若不存在,请输出-1

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
5 5 30
3 5 4 2 3
4 5 3 4 3
4 3 5 3 2
2 5 3 3 5
5 3 4 4 1
输出
30
示例2 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
5 5 10
3 5 4 2 3
4 5 3 4 3
4 3 5 3 2
2 5 3 3 5
5 3 4 4 1
输出
-1

三、腾讯

2022秋招某次笔试题

  • 第一题——牛牛的数链们

题目描述
牛牛有一堆数链,这些数链里面的数字都杂乱无章,
牛牛很懒,他不想整理一下这些数字,也是他决定将这些数链串在一起
牛牛遵循着以下规则:
1.依次取出毎条非空数链链头,将这个数插入到答案串尾部
2.如果全部数字都已经取出,则结束
示例1 输入输出示例仅供调试,后合判题数据一般不包含示例
输入
[{1,2,3},{4,5},{7,8,9,10,11,12}]
输出
{1,4,7,2,5,8,3,9,10,11,12}

  • 第二题——新精灵游戏

题目描述
小 A 和小B在玩一个精灵养成游戏、小A和小 B 各有 n 个精灵。每个精灵都有一个攻击力。现在小 A 想和小 B 对战。
规则是:毎个回合小 A 小B各派出一只精灵。攻击力因子更多的精灵获胜(因子数相同不算胜)。(每个精灵只能出战一次)一共 n 个回合
现在小 A 知道了小 B 会按1,2…n 的顺序出战。小 A 则可以改变精灵的出战顺序。小 A 希望自己赢的回合尽量多。如果小 A 选择最优的出战顺序。最多可以赢多少回合。
注:因子即与目标数字存在整除关系的数字,又称为约数、因数,如8的因子有[1, 2, 4, 8]
输入描述
第一行: n (小A,小B的精灵个数)(1≤ n≤ 100,000)
第二行: a [1], a [2], …,a[n] (小 A 的毎只精灵的攻击力)(1 ≤a [ i ]≤ 100,000)
第三行: b [1], b [2], b [ n ] (小B的每只精灵的攻击力)(1 ≤b[1]≤ 100,000)
输出描述
如果小A选择最优的出战顺序。最多可以赢的回合数。

  • 第三题——01串的价值

题目描述
给出一个只包含0和1的 01串 S ,下标从1开始,设第 i 位的价值为 vali ,则价值定义如下:在这里插入图片描述
你可以删除 s 的任意个字符,问这个串的最大价值是多少。
输入描述:
第一行一个正整数。代表串长度。
接下来一行一个01串s
1≤ n ≤5,000
输出描述
输出一个整数代表答案。

  • 第四题——数字划分

在这里插入图片描述

  • 第五题——有效序列的数量

题目描述
我们定义一个有效序列为:该序列两端的数一个为最小值,另一个为次小值。(即序列两端以外的数一定大于等于最左边的数且大于等于最右边的数)
在给你一个序列 a ,想让你找到它的连续子序列中有多少个有效序列(比如,12,23,123是序列123的连续子序列,但是13不是)
注:长度为2的子序列,一定为有效序列,长度为1的子序列,一定不是有效序列
输入描述
第一行输入一个整数 n 代表这个序列的长度
接下来输入 n 个整数,a[ i ]代表系列中第 i 个元素
对于20%的数据,1≤n≤100
对于70%的据,1≤n≤3,000
对于100%的据,1≤n≤100,000
对于100%的文据,1≤ a [1] ≤1,000,000,000
输出描述
输出一个正整数表示有效序列的数量

四、字节跳动

五、美团

2021春招-技术综合-后台方向笔试

  • 第一题——比赛

题目描述:
M 队和 T 队将要进行射箭比赛, M 队的队长是小美, T 队的队长是小团。这场射箭比表的规则是,每个队员都可以选择一个距离进行射击,若射中靶心且距离小于等于 d 则团队得1分,若射中靶心且距离大于 d 则团队得2分。小团对敌我情况了如指掌,他知道接下来 M 队将会有 n 名队员射中靶心,且知道这些队员选择的射箭距离,以及自己所带领的 T 队会有 m 名队员射中靶心和他们选择的射箭距离。假定 d 的值可以由小团确定( d 的范围恒为[1, 1000]),小团想道自己的队伍最多能贏小美的队伍多少分( T 队得分减去 M 队得分的最大值)。
输入描述
第一行两个正整数 n,m,分别表示 M 队射中靶心的队员个数和 T 队射中靶心的队员个数。
接下来一行n个整数,表示M队中n个队员的射箭距离
接下来一行m个整数,表示T队中m个队员的射箭距离
输出描述
一行一个整数,表示T队最多能赢M队的分数
样例输入
2 3
585 375
936 317 185
样例输出
2

  • 第二题——买房

题目描述
小美和小团居住的城市有n座房子呈一条直线排列,相邻两房子间隔相同,第i座房子编号为i,小美知道小团的房子可能在某些房子中,他想买一套房子使得距离小团可能所在的房子的期望距离尽可能小,同时又不超过k元钱,于是向你求助。
输入描述
第一行2个整数,n,k
第二行n个整数A1…An,分别为第i座房子的价格,如果价格为0表示小美可能在这一房子中,且此房子不可购买,小美出现在所有可能的房子中的概率相同。
2 ≤ n ≤ 100, 0 ≤ Ai,k ≤ 100
输出描述
输出一个正整数,表示小团需购买的房子的编号,数据保证至少有一间是小美可能居住的地方且至少有一间房子小团可购买。
样例输入
5 3
4 5 0 3 3
样例输出
4

  • 第三题——关键串

题目描述:定义一个字符串为关健串当且仅当该串中出现次数最多的字符严格超过了字符总数(即串长)的一半。如字符串"a", “aab”, “aaab”, “abccc"是关健串,而"ab”, “abc”, “aabb”, "abcc"不是。
给一个长度为 n 的字符事s ,有多少个子串是关键串?
子串:对于一个给定的字符串,串中任意个连续的字符组成的子序列称为该串的子串。
输入描述
第一行是一个正整数 n ,表示字符串的长度, 1 ≤ n ≤ 1000
第二行是一个长度为 n 的仅包含小写字母的字符串
输出描述
输出一行,表示字符串s中是关键串的子串个数
样例输入
5
ccccb
样例输出
14
提示
14个符合关键串定义的子串分别为c, c, c, c, b, cc, cc, cc, ccc, ccc, ccb, cccc, cccb, ccccb

  • 第四题——消除

题目描述
给一个长度为n的只包含0和1的序列,每次可以使用魔法消除相邻的3个数,在可以用任意次魔法的前提下,0的个数和1的个数的最大差值是多少?输出这个最大差值。
输入描述
第一行是一个正整数n,表示序列的长度
第二行是只包含0和1的序列,其长度为n,n ≤ 10000
输出描述
输出一个正整数,表示这个最大差值
样例输入
5
00001
样例输出
3

六、京东

2021秋招笔试题目

  • 题目1——交叉

题目描述
定义一个点为t直线交点当且仅当该点横纵坐标为非负整数且刚好有t条直线经过该点。
给出平面上n条相互不重合的直线的斜截式 y = kx + b ,询问对于2≤ t ≤n,t直线交点的数量。
在这里插入图片描述
上图三条直线交点有3个,B、F、D,其中B、D为两直线交点,F由于横坐标为非整数,故不计算在内。
输入描述
第一行一个整数n,(1≤n≤10^4),表示一共有n条直线
接下来n行,每行包括两个整数k和b,表示直线的斜率和截距
输出描述
一行输出n-1个数,第一个数表示平面上两直线交点的数量,第二个数表示三条直线交点的数量,以此类推。
示例
输入
3
2 2
3 0
0 3
输出
2 0

  • 题目 2 —— 合成大西瓜

题目描述
2021年过年,小明在玩合成大西瓜。他听说你会编代码,他母让你帮他拿最高分。但你显然井不会此编程,所以你想了个简易版的合成大西瓜来糊弄小明
规则是这样的,有一事数字序列,当序列到来时,你们可以选择让数字掉落在左边或者右边。已掉落的只有左右两列。如果掉落到一列的数字和此列原有的顶部数字相同,将会合成一个原来的数字并记1分,不同的数字则会堆积(顶部数字换为新掉落的数字)并不计分,例如,左右两边的顶部元素分别是1,2,此时掉落1,如果你让它掉在左边,左边两个元素1合井,并积一分,如果你让它掉在右边,两边的顶部元素就会变成1,1,并目不计分。
小明提前得知数字序列,请你帮忙计算在现有规则下的最大得分。
输入描述
第一行一个正整数,n表示数字序列的数字数量
第二行n个整数Ai,表示第i个掉落的数字
1≤n≤10^5,1≤Ai≤n
输出描述
输出一个非负整数,表示最大得分。请在输出时加上换行符
示例
输入
6
1 2 3 1 2 2
输出
2
解释
将第2、5、6个掉落在右边,剩余的掉落在左边即可得到最大得分,2分

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐