版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年程序员中级面试专业题集一、编程语言与数据结构(共5题,每题10分,总分50分)1.题目:请实现一个函数,输入一个整数数组,返回数组中所有可能的子集(不包含空集)。要求:不能使用递归,时间复杂度尽可能低。示例输入:`[1,2,3]`示例输出:`[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]`2.题目:给定一个字符串`s`,判断其是否是有效的括号字符串(只包含`'{'`、`'}'`、`'['`、`']'`、`'('`、`')'`,且括号匹配正确)。示例输入:`"()[]{}"`示例输出:`true`示例输入:`"(]"`示例输出:`false`3.题目:实现一个LRU(LeastRecentlyUsed)缓存,支持`get`和`put`操作。LRU缓存容量为`capacity`,当缓存满时,最近最少使用的项将被移除。示例输入:`LRUCache=LRUCache(2)``LRUCache.put(1,1)``LRUCache.put(2,2)``LRUCache.get(1)`//返回1`LRUCache.put(3,3)`//去除键2`LRUCache.get(2)`//返回-1(未找到)示例输出:`[1,-1]`4.题目:给定一个非负整数`num`,将其转换为罗马数字。罗马数字由以下字符组成:`I=1`,`V=5`,`X=10`,`L=50`,`C=100`,`D=500`,`M=1000`。示例输入:`3`示例输出:`"III"`5.题目:实现一个快速排序算法,要求:-不使用递归,使用迭代的方式实现。-处理包含重复元素的数组时,要求稳定性(尽量保持相等元素的相对顺序)。示例输入:`[4,2,2,8,3,3,1]`示例输出:`[1,2,2,3,3,4,8]`二、系统设计(共3题,每题15分,总分45分)1.题目:设计一个短链接系统,要求:-输入一个长链接,返回一个短链接(如`/abcd`)。-支持通过短链接反查原始长链接。-系统需要支持高并发访问,且短链接生成唯一性要求高。考察点:-分布式ID生成方案(如TwitterSnowflake算法)。-高并发缓存策略(Redis)。-数据库设计(短链接与长链接的映射关系)。2.题目:设计一个实时日志分析系统,要求:-支持每秒接收大量日志(如10万条/秒)。-实时统计当前活跃用户数(如IP或设备ID)。-支持按时间窗口(如1分钟)统计PV、UV。考察点:-数据流处理框架(如Flink或SparkStreaming)。-内存缓存(Redis)。-数据库写入优化(水平分片)。3.题目:设计一个消息队列(如Kafka),要求:-支持高吞吐量和低延迟(如毫秒级)。-保证消息的顺序性(同一会话的消息按发送顺序消费)。-支持消息重试机制(如失败后重新投递)。考察点:-消息分区策略。-消息确认机制(如ACK)。-容灾设计(多副本存储)。三、数据库与SQL(共4题,每题12分,总分48分)1.题目:假设有一个订单表`orders`,字段包括`id`(主键)、`user_id`、`order_time`(订单创建时间)、`status`(订单状态,如`'pending'`、`'completed'`)。请写SQL查询:-统计每个状态下的订单数量,按状态升序排列。-查询最近7天内每个用户的订单完成率(`status='completed'`的比例)。2.题目:假设有一个商品表`products`,字段包括`id`(主键)、`name`、`category`、`price`。请写SQL查询:-查询每个分类下的平均价格,且只返回平均价格超过100的商品分类。-查询价格最低的前3个商品,要求按分类分组,同类商品按价格升序。3.题目:假设有一个用户表`users`(`id`,`name`,`city`)和一个订单表`orders`(`id`,`user_id`,`amount`)。请写SQL查询:-查询每个城市的用户数量,且只返回用户数量超过100的城市。-查询每个用户的总消费金额,并按消费金额降序排列,只返回消费金额前10的用户。4.题目:假设有一个表`logs`,包含字段`id`,`user_id`,`action`(如`'login'`,`'logout'`,`'purchase'`),`timestamp`。请写SQL查询:-查询每个用户的最后`'login'`和`'logout'`时间,并计算登录时长(`logout`-`login`)。-查询最近24小时内,每个`'purchase'`动作的用户数量。四、网络与分布式(共3题,每题15分,总分45分)1.题目:解释HTTP和HTTPS的区别,并说明HTTPS的工作原理(TLS/SSL握手过程)。考察点:-HTTP状态码(如`200`,`404`,`500`)的含义。-TLS握手步骤(ClientHello,ServerHello,Certificate,etc.)。-CDN和WAF的作用。2.题目:假设你要设计一个分布式缓存系统(如Redis集群),要求:-说明Redis集群的节点划分方式(如16384个槽位)。-如何保证缓存的高可用性(主从复制+哨兵或RedisSentinel)。-缓存穿透、缓存击穿、缓存雪崩的解决方案。3.题目:解释CAP理论,并说明在分布式系统中如何选择一致性模型(强一致性、最终一致性)。考察点:-Paxos/Raft算法的基本原理。-分布式事务(2PC/3PC)。-CAP理论在实践中的应用(如Cassandra与MongoDB的选择)。五、算法与设计(共4题,每题12分,总分48分)1.题目:给定一个字符串`s`,判断其是否是回文串(忽略大小写和非字母数字字符)。示例输入:`"Aman,aplan,acanal:Panama"`示例输出:`true`示例输入:`"raceacar"`示例输出:`false`2.题目:实现一个二叉树的深度优先遍历(前序、中序、后序),要求:-不使用递归,使用栈实现。-输出遍历结果。示例输入:1/\23/\45示例输出:-前序:`[1,2,4,5,3]`-中序:`[4,2,5,1,3]`-后序:`[4,5,2,3,1]`3.题目:实现一个LRU缓存,使用双向链表和哈希表实现(不使用现成库)。考察点:-双向链表的插入和删除操作。-哈希表快速查找。4.题目:设计一个算法,判断一个无向图是否是二分图(BipartiteGraph)。考察点:-深度优先搜索(DFS)或广度优先搜索(BFS)的应用。-色彩标记法。答案与解析一、编程语言与数据结构1.子集生成(非递归)pythondefsubsets(nums):res=[[]]fornuminnums:复制当前所有子集,并添加新元素new_subsets=[]forsubsetinres:new_subsets.append(subset+[num])res+=new_subsetsreturnres解析:-使用迭代方式,初始时只有空集`[]`。-每次遍历一个新元素,将其添加到所有现有子集的末尾,生成新的子集。-时间复杂度:O(2^n),因为每个元素有选择或不选择的两种情况。2.有效括号判断pythondefisValid(s):stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top=stack.pop()ifstackelse'#'ifmapping[char]!=top:returnFalseelse:stack.append(char)returnnotstack解析:-使用栈,遇到左括号入栈,遇到右括号时弹出栈顶并检查是否匹配。-栈顶始终是最近未匹配的左括号。-时间复杂度:O(n),每个字符遍历一次。3.LRU缓存(迭代实现)pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache:将key移动到order末尾表示最近使用self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key:int,value:int)->None:ifkeyinself.cache:更新值,并移动到最近使用self.order.remove(key)eliflen(self.cache)==self.capacity:移除最久未使用的元素(order第一个)oldest=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)解析:-使用哈希表`cache`存储键值对,`order`列表记录使用顺序。-`get`时将key移到列表末尾,`put`时如果容量满则删除列表第一个元素。4.整数转罗马数字pythondefintToRoman(num:int)->str:val=[1000,900,500,400,100,90,50,40,10,9,5,4,1]syms=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]res=[]foriinrange(len(val)):whilenum>=val[i]:res.append(syms[i])num-=val[i]return''.join(res)解析:-从最大值开始匹配,将对应符号添加到结果中,并减少数值。-时间复杂度:O(1),符号数量固定。5.迭代快速排序(稳定性)pythondefquick_sort(arr):stack=[(0,len(arr)-1)]whilestack:start,end=stack.pop()ifstart>=end:continuepivot=arr[end]lt=startgt=endi=startwhilei<=gt:ifarr[i]<pivot:arr[i],arr[lt]=arr[lt],arr[i]lt+=1i+=1elifarr[i]>pivot:arr[i],arr[gt]=arr[gt],arr[i]gt-=1else:i+=1stack.append((start,lt-1))stack.append((gt+1,end))returnarr解析:-使用栈模拟递归,将数组分为`<pivot`、`==pivot`、`>pivot`三部分。-稳定性通过`lt`和`gt`指针控制,确保相等元素保持顺序。二、系统设计1.短链接系统设计-ID生成:使用TwitterSnowflake算法,生成64位唯一ID(41位时间戳+10位机器ID+13位序列号)。-缓存策略:短链接查询通过Redis缓存,TTL设为24小时。-数据库设计:sqlCREATETABLEshort_links(idBIGINTPRIMARYKEY,original_urlVARCHAR(2048),created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP);-高并发处理:API网关限流,后端通过ShardingSphere水平分库。2.实时日志分析系统-数据流处理:使用Flink窗口函数统计1分钟内PV/UV,内存缓存活跃用户(Redis)。-数据库优化:日志表按时间分片(每日一个分区),使用InnoDB引擎支持高并发写入。-容灾方案:Kafka集群3副本,日志写入HDFS双副本。3.消息队列设计-分区策略:按业务ID哈希分区,确保同一会话消息有序。-确认机制:消费端ACK确认,超时自动重试(最多3次)。-容灾设计:消息副本存储在异构机房,使用Raft协议保证数据一致性。三、数据库与SQL1.订单统计SQLsql--订单数量统计SELECTstatus,COUNT()AScountFROMordersGROUPBYstatusORDERBYstatus;--用户完成率SELECTuser_id,ROUND(COUNT(CASEWHENstatus='completed'THEN1END)1.0/COUNT()100,2)AScompletion_rateFROMordersWHEREorder_time>=NOW()-INTERVAL7DAYGROUPBYuser_idORDERBYcompletion_rateDESC;2.商品价格统计SQLsql--分类平均价格>100SELECTcategory,AVG(price)ASavg_priceFROMproductsGROUPBYcategoryHAVINGAVG(price)>100;--价格最低的前3个商品(按分类分组)SELECTid,name,priceFROM(SELECTid,name,price,category,ROW_NUMBER()OVER(PARTITIONBYcategoryORDERBYprice)ASrankFROMproducts)ASrankedWHERErank<=3;3.用户统计SQLsql--城市用户数量>100SELECTcity,COUNT()ASuser_countFROMusersGROUPBYcityHAVINGCOUNT()>100;--消费金额前10的用户SELECTuser_id,SUM(amount)AStotal_spentFROMordersGROUPBYuser_idORDERBYtotal_spentDESCLIMIT10;4.日志分析SQLsql--最后登录/登出时间SELECTuser_id,MAX(CASEWHENaction='login'THENtimestampEND)ASlast_login,MAX(CASEWHENaction='logout'THENtimestampEND)ASlast_logoutFROMlogsGROUPBYuser_id;--24小时内购买次数SELECTuser_id,COUNT()ASpurchase_countFROMlogsWHEREaction='purchase'ANDtimestamp>=NOW()-INTERVAL24HOURGROUPBYuser_id;四、网络与分布式1.HTTP与HTTPS-区别:-HTTP:明文传输,易被窃取;HTTPS:加密传输(TLS/SSL)。-HTTPS需要证书和CA验证。-TLS握手过程:1.ClientHello:发送支持的加密算法、随机数。2.ServerHello:选择最优算法,发送证书。3.证书验证:CA验证证书有效性。4.SessionKeys:协商生成对称密钥。2.Redis集群设计-节点划分:16384个槽位,每个节点负责部分槽位。-高可用:-主从复制(Master写,Slave读)。-哨兵(Sentinel)监控Master,故障自动切换。-缓存问题解决方案:-缓存穿透:布隆过滤器拦截不存在的key。-缓存击穿:设置热点key永不过期。-缓存雪崩:随机设置不同TTL。3.CAP理论-定义:-C:一致性(所有节点数据实时同步)。-A:可用性(任何请求都能得到响应)。-P:分区容错性(网络分区下仍能运行)。-选择:-分布式事务(如2PC)选C,消息队列(如Kafka)选A。-Cassandra选P(最终一致性),MongoDB选C(强一致性)。五、算法与设计1.回文串判断pythondefisPalindrome(s:str)->bool:s=''.join(c.lower()forcinsifc.isalnum())returns==s[::-1]解析:-去除非字母数字字符并转为小写,然后比较正反是否相等。2.二叉树遍历(迭代)pythondefpreorderTraversal(root):ifnotroot:return[]stack,res=[root],[]whilestack:node=stack.pop()res.append(node.val)ifnode.right:stack.append(node.right)ifnode.left:stack.append(node.left)returnresdefinorderTraversal(root):stack,res,node=[],[],rootwhilestackornode:whilenode:stack.append(node);node=node.leftnode=stack.pop();res.append(node.val);node=node.rightreturnresdefpostorderTraversal(root):stack,res=[(root,False)],[]whilestack:node,visited=stack.pop()ifnode:ifvisited:res.append(node.val)else:stack.append((node,True))stack.append((node.right,False))stack.append((node.left,False))returnres3.LRU缓存(双向链表+哈希表)pythonclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head,self.tail=Node(0,0),Node(0,0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]sel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026北京西城区北自科技校园招聘参考考试试题及答案解析
- 2026年郑州商贸旅游职业学院单招综合素质考试备考试题含详细答案解析
- 2026年宁夏职业技术学院单招综合素质考试模拟试题含详细答案解析
- 2026年广东茂名农林科技职业学院单招综合素质考试备考题库含详细答案解析
- 2026年铁岭师范高等专科学校高职单招职业适应性测试模拟试题及答案详细解析
- 2026年长沙电力职业技术学院单招综合素质笔试备考试题含详细答案解析
- 2026年长白山职业技术学院单招综合素质考试备考试题含详细答案解析
- 2026年辽宁工程职业学院单招综合素质考试参考题库含详细答案解析
- 2026广西崇左凭祥市退役军人服务中心见习人员招聘1人考试参考题库及答案解析
- 2026年海南外国语职业学院单招职业技能考试备考试题含详细答案解析
- 山东省济南市2025-2026年高三上第一次模拟考试生物+答案
- 寒假蓄力一模冲刺+课件-2025-2026学年高三上学期寒假规划班会课
- 2026年广州中考政治真题变式训练试卷(附答案可下载)
- 2026国家国防科技工业局所属事业单位第一批招聘62人备考题库及参考答案详解1套
- 2025-2026学年天津市河东区八年级(上)期末英语试卷
- 2025年初中初一语文基础练习
- 2026年中央网信办直属事业单位-国家计算机网络应急技术处理协调中心校园招聘备考题库参考答案详解
- 老友记电影第十季中英文对照剧本翻译台词
- 2025年黑龙江省大庆市检察官逐级遴选笔试题目及答案
- 国保秘密力量工作课件
- 影视分镜师合同范本
评论
0/150
提交评论