滴滴研发岗模拟卷(三)
模仿 2024 秋招研发岗笔试:19 道单选 + 1 道多选 + 2 道编程,限时 100 分钟。单选/多选来自专项练习题库,编程题为原创。(单选/多选答案取自专项题库(参考);编程题为原创,提供思路与参考代码。)
一、单选题(第 1–19 题,每题 5 分)
有关下述Java代码描述正确的选项是____。
public class TestClass {
private static void testMethod(){
System.out.println("testMethod");
}
public static void main(String[] args) {
((TestClass)null).testMethod();
}
}
在HTML中,( )可以在网页上通过链接直接打开邮件客户端发送邮件。
页面走向:4 3 2 1 4 3 5 4 3 2 1 5 4,当分配的内存物理快数4(开始为装入),采用LRU淘汰算法,产生多少次缺页?
1100|1010,1001^1001,1001&1100分别为()
数据库设计过程不包括以下选项的哪一个?
下列数据结构具有记忆功能的是?
在程序设计中,要对两个16K×16K的多精度浮点数二维数组进行矩阵求和时,行优先读取和列优先读取的区别是()
当很频繁地对序列中部进行插入和删除操作时,应该选择使用的容器是()
下面关于并行和并发的区别,说法错误的是()
下述()不属于多道程序运行的特征。
int func(int a){
int b;
switch(a){
case 1:b = 100;
case 2:b = 200;
case 3:b = 250;
default:b = 0; }
return b;
}
func(1)的值是多少?
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?
查看TCP连接的命令是什么?
数组A[0..5,0..6]的每个元素占5个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5,5]的地址是()
稳定的排序方法是()
()就是能从这许多查询策略中找出最有效的查询执行计划的一种处理过程。
用二进制来编码字符串 "abcdabaa",需要能够根据编码,解码回原来的字符串,最少需要()长的二进制字符串?
下面有关csrf的描述,说法错误的是?
以下哪个算法不是对称加密算法()
二、多选题(第 20 题,5 分)
下面有关servlet的层级结构和常用的类,说法正确的有?
三、编程题(第 21–22 题,自测后对照参考解法)
给定一个整数数组 nums,找出所有和为 0 且不重复的三元组 [a, b, c]。
输入:第一行 n,第二行 n 个整数。
输出:每个三元组一行,按字典序;无解输出空。
示例:
输入:
6
-1 0 1 2 -1 -4
输出:
-1 -1 2
-1 0 1
查看参考解法
排序 + 双指针:固定第一个数,用左右指针在剩余区间找两数之和为相反数;注意跳过重复元素去重。
def three_sum(nums):
nums.sort()
res = []
n = len(nums)
for i in range(n - 2):
if i > 0 and nums[i] == nums[i - 1]:
continue
l, r = i + 1, n - 1
while l < r:
s = nums[i] + nums[l] + nums[r]
if s == 0:
res.append([nums[i], nums[l], nums[r]])
while l < r and nums[l] == nums[l + 1]: l += 1
while l < r and nums[r] == nums[r - 1]: r -= 1
l += 1; r -= 1
elif s < 0:
l += 1
else:
r -= 1
return res
给定一个字符串 s,求 s 中最长的回文子串。
输入:一行字符串。
输出:最长回文子串(若存在多个,输出任意一个)。
示例:
输入:babad
输出:bab(或 aba)
查看参考解法
中心扩展法:以每个位置(及相邻两字符之间)为中心向两边扩展,记录最长的回文子串。复杂度 O(n²)。
def longest_palindrome(s):
res = ''
for i in range(len(s)):
for l, r in ((i, i), (i, i + 1)):
while l >= 0 and r < len(s) and s[l] == s[r]:
if r - l + 1 > len(res):
res = s[l:r + 1]
l -= 1; r += 1
return res