版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年Python程序员(中级)面试题精一、编程实现题(共5题,每题20分,总分100分)题目1(20分)请编写一个Python函数,实现以下功能:1.接收一个字符串参数,该字符串可能包含数字、字母、符号等混合字符2.返回一个新的字符串,要求:-将所有大写字母转换为小写-将所有小写字母转换为大写-保留数字和符号不变-如果输入字符串为空或非字符串类型,返回"Invalidinput"示例:-输入:"HelloWorld!123"→输出:"hELLOwORLD!123"-输入:"Python3.8"→输出:"pYTHON3.8"-输入:""→"Invalidinput"-输入:12345→"Invalidinput"题目2(20分)请实现一个函数,满足以下要求:1.接收两个参数:一个列表和一个整数k(k>0)2.返回一个新列表,其中包含原列表中所有长度大于等于k的子列表3.如果k为负数或非整数,返回"Invalidkvalue"示例:-输入:[[1,2,3],[4,5],[6],[7,8,9,10]],2→[[1,2,3],[7,8,9,10]]-输入:[[],[1],[2,3,4]],1→[[1],[2,3,4]]-输入:[[1,2],[3,4,5],[6]],-1→"Invalidkvalue"题目3(20分)编写一个函数,实现文件内容加密/解密功能:1.接收三个参数:文件路径、操作类型("encrypt"或"decrypt")和密钥(整数)2.对文件内容进行加密或解密:-加密:将每个字符的ASCII码值加上密钥-解密:将每个字符的ASCII码值减去密钥3.加密/解密后的内容保存到新文件,文件名在原文件名基础上添加"_encrypted"或"_decrypted"后缀4.处理异常情况:-文件不存在返回"Filenotfound"-文件无法读取/写入返回"Fileaccesserror"-操作类型或密钥无效返回"Invalidparameters"示例:-加密:"example.txt","encrypt",3→"example_encrypted.txt"包含加密内容-解密:"example_encrypted.txt","decrypt",3→原始内容题目4(20分)实现一个简单的URL解析器:1.接收一个完整的URL字符串2.返回一个字典,包含以下键值对:-scheme:协议部分(如http)-netloc:域名部分(如)-path:路径部分(如/)-query:查询参数部分(如key1=value1&key2=value2)3.如果URL格式不合法,返回"InvalidURL"示例:-输入:"/path?query=1&query2=2"→{"scheme":"https","netloc":"","path":"/path","query":"query=1&query2=2"}-输入:"/file.txt"→{"scheme":"ftp","netloc":"","path":"/file.txt","query":""}-输入:""→"InvalidURL"题目5(20分)编写一个函数,实现简单的日志分析:1.接收一个日志文件路径2.分析日志文件,统计:-总行数-错误日志数量(包含"ERROR"的行)-警告日志数量(包含"WARNING"的行)-日期格式日志数量(符合YYYY-MM-DD格式的行数)3.返回一个包含上述统计数据的字典4.处理异常:-文件不存在返回"Filenotfound"-文件无法读取返回"Filereaderror"示例:假设日志内容:2023-01-01INFOStartingprocess2023-01-01WARNINGLowmemory2023-01-02ERRORConnectionfailed2023-01-03INFOProcesscompleted-输入:"log.txt"→{"total_lines":4,"error_count":1,"warning_count":1,"date_format_count":3}二、算法与数据结构题(共5题,每题20分,总分100分)题目6(20分)给定一个非空整数数组,设计一个算法找到所有出现至少两次的数字,并返回它们的列表。要求:1.空间复杂度尽可能低2.时间复杂度尽可能优示例:-输入:[4,3,2,7,8,2,3,1]→[2,3]-输入:[1,1,1,3,3,4,3,2,4,2]→[1,3,2,4]题目7(20分)实现一个LRU(最近最少使用)缓存:1.使用Python实现,不需要外部库2.支持以下操作:-get(key):获取键对应的值,如果键不存在返回-1-put(key,value):插入或更新键值对3.缓存容量为固定值,超出容量时需要淘汰最久未使用的元素示例:-初始化LRU缓存容量为2-put(1,1)→缓存是{1:1}-put(2,2)→缓存是{1:1,2:2}-get(1)→返回1-put(3,3)→缓存是{2:2,3:3}(键1被淘汰)-get(2)→返回2-get(1)→返回-1题目8(20分)设计一个算法,找出数组中重复的数字,但不能修改数组,且不能使用额外空间。假设数组长度为n,数组中的数字范围在1到n之间。示例:-输入:[1,3,4,2,2]→2-输入:[3,1,3,4,2]→3题目9(20分)实现一个函数,将32位无符号整数的二进制表示翻转:1.不能使用语言内置的翻转函数2.不能使用额外的数组或字符串示例:-输入:43261536→964176192-输入:4294967293→3题目10(20分)给定一个二叉树,找出最长的路径,该路径中的节点具有递增的值。这条路径可以不经过根节点。示例:-输入:1/\23//\456→3(路径4-2-3)三、系统设计题(共3题,每题33分,总分99分)题目11(33分)设计一个简单的URL短链接服务:1.需要考虑的核心功能:-将长URL转换为短URL-将短URL解析回原始长URL-高并发处理能力-基础的统计功能(如点击次数)2.对以下方面进行说明:-数据存储方案-URL编码/解码策略-高并发场景下的解决方案-基本的分布式架构设计题目12(33分)设计一个简单的消息队列系统:1.需要考虑的核心功能:-消息发布/订阅-消息持久化-消息确认机制-可靠的消息传递2.对以下方面进行说明:-数据存储方案-消息消费模型-高可用设计-重试机制和死信队列设计题目13(33分)设计一个简单的限流系统:1.需要考虑的核心功能:-对API进行请求频率限制-支持不同粒度的限流(按IP、按用户等)-优雅的限流策略(如预热期、降级)-可配置的限流规则2.对以下方面进行说明:-数据存储方案-限流算法选择(如令牌桶、漏桶)-分布式限流设计-监控和告警设计答案与解析编程实现题答案题目1答案pythondefswap_case(s):ifnotisinstance(s,str):return"Invalidinput"returns.swapcase()解析:-使用`isinstance`检查输入是否为字符串-Python内置的`swapcase()`方法可以同时转换大小写-时间复杂度O(n),n为字符串长度题目2答案pythondeffilter_sublists(lst,k):ifnotisinstance(k,int)ork<=0:return"Invalidkvalue"return[subforsubinlstiflen(sub)>=k]解析:-首先验证k是否为正整数-列表推导式检查每个子列表长度是否>=k-时间复杂度O(m×n),m为列表长度,n为最长子列表长度题目3答案pythondefencrypt_decrypt_file(file_path,operation,key):ifnotisinstance(key,int):return"Invalidparameters"action=operation.lower()ifactionnotin["encrypt","decrypt"]:return"Invalidparameters"try:withopen(file_path,'r',encoding='utf-8')asf:content=f.read()ifaction=="encrypt":new_content="".join(chr(ord(c)+key)ifc.isprintable()elsecforcincontent)new_file=file_path+"_encrypted"else:new_content="".join(chr(ord(c)-key)ifc.isprintable()elsecforcincontent)new_file=file_path+"_decrypted"withopen(new_file,'w',encoding='utf-8')asf:f.write(new_content)returnf"{action.capitalize()}successful"exceptFileNotFoundError:return"Filenotfound"exceptIOError:return"Fileaccesserror"解析:-验证密钥和操作类型有效性-根据操作类型进行加密或解密-使用`ord()`和`chr()`处理ASCII码转换-处理文件读写异常-时间复杂度O(n),n为文件内容长度题目4答案pythonfromurllib.parseimporturlparsedefparse_url(url):try:parsed=urlparse(url)return{"scheme":parsed.scheme,"netloc":loc,"path":parsed.path,"query":parsed.query}exceptException:return"InvalidURL"解析:-使用`urllib.parse`模块的`urlparse`函数-返回包含各部分的字典-异常处理确保URL格式合法性-时间复杂度O(1)题目5答案pythonimportredefanalyze_log(file_path):try:withopen(file_path,'r',encoding='utf-8')asf:lines=f.readlines()total_lines=len(lines)error_count=sum(1forlineinlinesif"ERROR"inline)warning_count=sum(1forlineinlinesif"WARNING"inline)date_count=sum(1forlineinlinesifre.match(r"\d{4}-\d{2}-\d{2}",line[:10]))return{"total_lines":total_lines,"error_count":error_count,"warning_count":warning_count,"date_format_count":date_count}exceptFileNotFoundError:return"Filenotfound"exceptIOError:return"Filereaderror"解析:-使用正则表达式匹配日期格式-分别统计不同类型的日志-异常处理确保文件可读-时间复杂度O(n),n为行数算法与数据结构题答案题目6答案pythondeffind_duplicates(nums):seen=set()duplicates=set()fornuminnums:ifnuminseen:duplicates.add(num)else:seen.add(num)returnlist(duplicates)解析:-使用两个集合实现-第一次遍历记录出现过的数字-第二次遍历找出重复的数字-时间复杂度O(n),空间复杂度O(n)题目7答案pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeyinself.cache: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:oldest=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)解析:-使用字典存储键值对,列表维护使用顺序-get时移动键到末尾表示最近使用-put时如果超出容量删除最旧的元素-时间复杂度O(1)题目8答案pythondeffind_duplicate(nums):fornuminnums:index=abs(num)-1ifnums[index]<0:returnabs(num)nums[index]=-nums[index]return-1解析:-利用数组索引作为标记-遍历数组,将对应索引位置的值取反-如果遇到已取反的值,即为重复数字-时间复杂度O(n),空间复杂度O(1)题目9答案pythondefreverse_bits(n):result=0for_inrange(32):result=(result<<1)|(n&1)n>>=1returnresult&0xFFFFFFFF解析:-逐位翻转,从右到左-使用位运算实现-最后与0xFFFFFFFF进行AND操作确保32位-时间复杂度O(1)题目10答案pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdeflongest_increasing_path(root):self.max_length=0defdfs(node):ifnotnode:return0left=dfs(node.left)right=dfs(node.right)left_path=right_path=1ifnode.leftandnode.left.val>node.val:left_path=left+1ifnode.rightandnode.right.val>node.val:right_path=right+1self.max_length=max(self.max_length,left_path+right_path-1)returnmax(left_path,right_path)dfs(root)returnself.max_length解析:-使用深度优先搜索-记录左右子树的最长路径-更新全局最大值-时间复杂度O(n),n为节点数系统设计题答案题目11答案核心功能1.URL转换:长URL通过哈希算法生成短码,如使用Base62编码2.URL解析:短码通过映射表查找原始URL3.统计功能:记录每个短URL的访问次数技术方案1.数据存储:-使用Redis存储短码与长URL的映射关系-使用MongoDB存储访问统计信息2.URL编码:-使用Base62编码(0-9,a-z,A-Z)将64位ID转换为6位短码-确保短码唯一性,避免冲突3.高并发处理:-使用分布式缓存层(RedisCluster)-设置合理的超时时间(TTL)自动清理无效短链接-负载均衡部署多个服务实例架构设计1.分布式架构:-Web服务器层:Nginx负
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业合规管理的操作指南
- 安全环保目标达成承诺书范文5篇
- 介孔二氧化硅纳米粒的药物递送研究报告
- 社区绿化带保护维护预案
- 企业服务承诺保证承诺书范文3篇
- 酒店餐饮服务卫生管理规范方案
- 财务管理问题分析处理手册
- 食品卫生安全与检验规范手册
- 小学学习动机“2025”说课稿
- 小学生涯规划主题班会说课稿
- 假发行业营销方案
- 地源热泵打井协议书
- 口腔器械清洗消毒培训
- 2025年全国社区工作者招聘考试公共基础知识真题及答案
- 机械制图的基本知识与技能教学设计-2025-2026学年中职专业课-汽车机械基础-汽车运用与维修-交通运输大类
- PADI潜水OW理论知识课件
- 部编人教版一年级语文下册期末重点知识点复习
- 小儿脑瘫病例书写范文
- 健身房设计方案
- 车队车辆防汛安全培训课件
- 企业税务规划与合规管理模板
评论
0/150
提交评论