滴滴研发岗模拟卷(二)

模仿 2024 秋招研发岗笔试:19 道单选 + 1 道多选 + 2 道编程,限时 100 分钟。单选/多选来自专项练习题库,编程题为原创。(单选/多选答案取自专项题库(参考);编程题为原创,提供思路与参考代码。)

⏱ 剩余 100:00已答 0 / 20

一、单选题(第 1–19 题,每题 5 分)

第 1 题 · 单选

线性表(a_1,a_2,a_3,...,a_n)以链表方式存储时,访问第i位置元素的时间复杂性为()?

第 2 题 · 单选

给定一个m行n列的整数矩阵(如图),每行从左到右和每列从上到下都是有序的。判断一个整数k是否在矩阵中出现的最优算法,在最坏情况下的时间复杂度是________。

第 3 题 · 单选

给定下列程序,那么执行printf("%d\n", foo(20, 13));的输出结果是()

int foo(int x, int y){
    if (x <= 0 || y <= 0) 
        return 1; 
    return 3 * foo( x-6, y/2 ); 
}
第 4 题 · 单选

Given the following class:

public class Cat
{
    long length;
    public Cat(long l)
    {
        length = 1;
    }
    public static void main(String arg[])
    {
        Cat c1, c2, c3;
        c1 = new Cat(10L);
        c2 = new Cat(10L);
        c3 = c2;
        long m = 21L;
    }
}

	

Which expression returns true?

第 5 题 · 单选

下列数据结构具有记忆功能的是?

第 6 题 · 单选

在支持多线程的系统中,进程P创建的若干线程不能共享的是?

第 7 题 · 单选

对任何数据结构链式存储结构一定优于顺序存储结构()

第 8 题 · 单选

Linux中包括两种链接:硬链接(Hard Link)和软连接(Soft Link),下列说法正确的是()

第 9 题 · 单选

以下哪个数据结构不是多型数据类型()

第 10 题 · 单选

关于回滚段的使用,下列哪种分配方法比较合适?

第 11 题 · 单选

如入栈序列为1,2,3,4,5,则可能得到的出栈序列为()

第 12 题 · 单选

牛客网的数据库有一个paper表,现在要查询试卷名字包含"人人网"的所有数据,则sql语句应该为?

第 13 题 · 单选

下列的进程状态变化中,哪些是不可能发生的?

第 14 题 · 单选

内排序要求数据一定要以顺序方式存储()

第 15 题 · 单选

下面有关虚函数的描述,说法错误的是?

第 16 题 · 单选

一个递归算法必须包括()

第 17 题 · 单选

若有以下定义和语句:

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = a;

则不能表示a数组元素的表达式是

第 18 题 · 单选

以下程序的输出结果是

#include <stdio.h>
int a, b;
void fun() {
    a = 100;
    b = 200;
}

int main() {
    int a = 5, b = 7;
    fun();
    printf("%d %d\n", a, b);
    return 0;
}
第 19 题 · 单选

下面名词解释错误的是:

二、多选题(第 20 题,5 分)

第 20 题 · 多选

请描述http请求get和post的区别,下面描述正确的有:

三、编程题(第 21–22 题,自测后对照参考解法)

第 21 题 · 编程

给定 n 个会议,每个会议有开始时间 start 和结束时间 end。同一时间只能参加一个会议,求最多能参加多少个会议(区间调度问题)。

输入:第一行 n,接下来 n 行每行两个整数 start end。

输出:最多能参加的会议数。

示例:

输入:

4

1 3

2 4

3 5

4 6

输出:

2

查看参考解法

贪心:按结束时间升序排序,依次选择「开始时间不早于上一个所选会议结束时间」的会议,数量最多。

def max_meetings(meetings):
    meetings.sort(key=lambda x: x[1])
    cnt = 0
    end = -1
    for s, e in meetings:
        if s >= end:
            cnt += 1
            end = e
    return cnt
第 22 题 · 编程

有 n 件物品和一个容量为 W 的背包。每件物品有重量 weight[i] 和价值 value[i],每件物品只能取一次(0-1 背包)。求背包能装下的最大总价值。

输入:第一行 n W,第二行 n 个重量,第三行 n 个价值。

输出:最大总价值。

示例:

输入:

3 5

2 3 4

3 4 5

输出:

7

查看参考解法

0-1 背包动态规划:dp[j] 表示容量 j 时的最大价值,逆序枚举容量避免重复取。

def knapsack(W, weights, values, n):
    dp = [0] * (W + 1)
    for i in range(n):
        for w in range(W, weights[i] - 1, -1):
            dp[w] = max(dp[w], dp[w - weights[i]] + values[i])
    return dp[W]