- 0
- 0
- 约3.81千字
- 约 12页
- 2026-02-03 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年计算机科学与技术面试题及答案
一、编程题(共3题,每题20分)
题目1(Python编程,20分):
请编写一个Python函数,实现以下功能:
1.输入一个字符串,统计其中每个字母的出现次数,并按字母顺序输出(忽略大小写);
2.如果输入为空或非字符串类型,返回`输入无效`。
示例:输入`HelloWorld`,输出`{d:1,e:1,h:1,l:3,o:2,r:1,w:1}`。
答案1:
python
defcount_letters(s):
ifnotisinstance(s,str)ornots:
return输入无效
s=s.lower()
count={}
forcharins:
ifchar.isalpha():
count[char]=count.get(char,0)+1
returndict(sorted(count.items()))
解析1:
1.首先检查输入是否为空或非字符串类型,若不符合要求则返回提示;
2.将字符串转为小写统一统计;
3.遍历字符串,仅统计字母并计数;
4.使用`sorted`对结果按字母顺序排序并返回字典。
题目2(算法设计,20分):
给定一个无重复元素的数组`arr`和一个目标值`target`,请设计一个算法,找出所有和为`target`的不重复数字对(顺序不限)。
示例:输入`arr=[1,2,3,4,5]`,`target=5`,输出`[(1,4),(2,3)]`。
答案2:
python
deffind_pairs(arr,target):
arr.sort()
result=[]
left,right=0,len(arr)-1
whileleftright:
total=arr[left]+arr[right]
iftotal==target:
result.append((arr[left],arr[right]))
left+=1
right-=1
跳过重复元素
whileleftrightandarr[left]==arr[left-1]:
left+=1
whileleftrightandarr[right]==arr[right+1]:
right-=1
eliftotaltarget:
left+=1
else:
right-=1
returnresult
解析2:
1.先对数组排序,便于使用双指针法;
2.使用左指针`left`和右指针`right`遍历,计算两数之和;
3.若和等于目标值,记录并移动指针,同时跳过重复元素;
4.若和小于目标值,左指针右移;反之右指针左移。
题目3(数据库设计,20分):
假设要设计一个电商平台的订单表,包含以下字段:
-`order_id`(订单ID,主键)
-`user_id`(用户ID)
-`product_id`(商品ID)
-`quantity`(数量)
-`price`(单价)
-`order_time`(下单时间)
请写出SQL语句创建该表,并写出查询某用户最近3笔订单的SQL语句。
答案3:
sql
--创建表
CREATETABLEorders(
order_idINTAUTO_INCREMENTPRIMARYKEY,
user_idINTNOTNULL,
product_idINTNOTNULL,
quantityINTNOTNULL,
priceDECIMAL(10,2)NOTNULL,
order_timeDATETIMEDEFAULTCURRENT_TIMESTAMP
);
--查询最近3笔订单
SELECTFROMorders
WHEREuser_id=123
ORDERBYorder_timeDESC
LIMIT3;
解析3:
1.使用`AUTO_INCREMENT`设置自增主键;
2.`DATETIME`存储时间,默认为当前时间;
3.查询时按`order_time`降序排列,`LIMIT3`取最新3条。
二、系统设计题(共2题,每题30分)
题目4(分布式系统设计,30分):
设计一个高并发的短链接生成系统,要求:
1.支持每秒百万级请求;
2.链接短小且唯一;
3.具备高可用性。
答案4:
1.系统架构:
-使用负载均衡(如Nginx)分发请求;
-Redis缓存热点短链接,减少数据库压力;
-数据库(如
原创力文档

文档评论(0)