版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年人工智能编程面试题库一、编程实现题(共5题,每题20分)1.题目:实现一个函数,输入一个字符串,返回该字符串中所有重复字符的频率(即每个字符出现的次数)。要求使用Python编写,并考虑时间复杂度和空间复杂度。示例输入:`"helloworld"`示例输出:`{'h':1,'e':1,'l':3,'o':2,'':1,'w':1,'r':1,'d':1}`2.题目:编写一个算法,输入一个整数数组,返回数组中的“峰值元素”的索引。峰值元素是指其值严格大于左右相邻元素的元素。假设数组边界外的元素值为负无穷。示例输入:`[1,2,3,1]`示例输出:`2`提示:可以使用二分查找优化时间复杂度。3.题目:实现一个LRU(最近最少使用)缓存的数据结构,支持`get`和`put`操作。`get(key)`返回键对应的值,如果键不存在返回-1;`put(key,value)`将键值对插入缓存中,如果缓存已满,则删除最久未使用的元素。示例输入:pythonlru=LRUCache(2)lru.put(1,1)lru.put(2,2)lru.get(1)#返回1lru.put(3,3)#去除键2lru.get(2)#返回-1(未找到)4.题目:编写一个函数,输入一个非负整数`n`,返回所有小于或等于`n`的素数的列表。要求使用高效的筛选算法(如埃拉托斯特尼筛法)。示例输入:`10`示例输出:`[2,3,5,7]`5.题目:实现一个简单的自然语言处理任务:输入一段文本,提取其中的命名实体(如人名、地名、组织名),并返回实体列表。可以使用简单的规则或正则表达式。示例输入:`"AppleInc.isheadquarteredinCupertino,California."`示例输出:`['AppleInc.','Cupertino','California']`二、算法设计题(共3题,每题25分)1.题目:设计一个算法,输入一个包含重复元素的整数数组,返回所有可能的子集(无重复元素的组合)。要求使用回溯法实现。示例输入:`[1,2,2]`示例输出:`[[],[1],[1,2],[1,2,2],[2],[2,2]]`2.题目:给定一个字符串`s`和另一个字符串`p`,设计一个算法,找到`s`中所有`p`的异位词的起始索引。异位词是指字母相同但顺序不同的字符串。示例输入:`s="cbaebabacd",p="abc"`示例输出:`[0,6]`提示:可以使用滑动窗口技术。3.题目:设计一个算法,输入一个二叉树,返回其锯齿形层序遍历的结果。即第一层从左到右,第二层从右到左,以此类推。示例输入:python二叉树结构1/\23/\/\4567示例输出:`[[1],[3,2],[4,5,6,7]]`三、系统设计题(共2题,每题30分)1.题目:设计一个简单的新闻推荐系统,输入用户的历史阅读记录和新闻内容,输出用户可能感兴趣的新闻列表。要求考虑至少两种推荐算法(如协同过滤、基于内容的推荐)。简要描述算法原理和实现步骤。示例输入:python用户历史阅读记录user_history={'user1':['news1','news3'],'user2':['news2','news3'],}新闻内容(关键词)news_content={'news1':{'category':'科技','keywords':['AI','机器学习']},'news2':{'category':'体育','keywords':['足球','世界杯']},'news3':{'category':'科技','keywords':['编程','Python']},'news4':{'category':'娱乐','keywords':['电影','明星']},}2.题目:设计一个高并发的短链接生成服务,要求支持秒级响应,并能够处理大量并发请求。简要描述系统架构、数据存储方案和负载均衡策略。示例需求:-输入:长链接-输出:短链接(如`/abc123`)-要求:短链接唯一、可快速解析回原链接。四、编码能力题(共5题,每题15分)1.题目:编写一个函数,输入一个字符串,返回该字符串中所有唯一字符的顺序。示例输入:`"leetcode"`示例输出:`"letcod"`2.题目:实现一个简单的二叉搜索树(BST),支持插入和查找操作。示例输入:pythonbst=BST()bst.insert(5)bst.insert(3)bst.insert(7)bst.search(3)#返回Truebst.search(4)#返回False3.题目:编写一个函数,输入一个整数数组,返回该数组的中位数。假设数组长度为奇数或偶数。示例输入:`[3,1,2]`示例输出:`2`示例输入:`[1,2,3,4]`示例输出:`2.5`4.题目:实现一个简单的LRU缓存的单向链表版本,支持`get`和`put`操作。示例输入:pythonlru=LRUCache(1)lru.put(1,1)lru.get(1)#返回1lru.put(2,2)#去除键1lru.get(1)#返回-1(未找到)5.题目:编写一个函数,输入一个字符串,返回该字符串的罗马数字表示。示例输入:`"MCMXCIV"`示例输出:`1994`答案与解析一、编程实现题1.答案:pythondefcount_frequencies(s:str)->dict:freq={}forcharins:freq[char]=freq.get(char,0)+1returnfreq解析:使用哈希表(Python中的字典)统计每个字符的出现次数,时间复杂度为O(n),空间复杂度为O(m),其中n为字符串长度,m为不同字符的数量。2.答案:pythondeffind_peak_element(nums:list)->int:left,right=0,len(nums)-1whileleft<right:mid=(left+right)//2ifnums[mid]>nums[mid+1]:right=midelse:left=mid+1returnleft解析:利用二分查找,每次比较中间元素与右邻居,根据大小关系调整搜索范围,时间复杂度为O(logn)。3.答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=Node(0,0)self.tail=Node(0,0)self.head.next=self.tailself.tail.prev=self.headclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=Nonedefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:self._remove(self.cache[key])node=self.Node(key,value)self.cache[key]=nodeself._add(node)iflen(self.cache)>self.capacity:lru=self.tail.prevself._remove(lru)delself.cache[lru.key]def_remove(self,node:Node)->None:node.prev.next=node.nextnode.next.prev=node.prevdef_add(self,node:Node)->None:node.next=self.head.nextnode.next.prev=nodeself.head.next=nodenode.prev=self.head解析:使用双向链表和哈希表实现LRU缓存。链表维护访问顺序,哈希表提供O(1)的查找。`_remove`和`_add`操作确保链表头部为最近访问的元素。4.答案:pythondefsieve_of_eratosthenes(n:int)->list:is_prime=[True](n+1)is_prime[0]=is_prime[1]=Falseforiinrange(2,int(n0.5)+1):ifis_prime[i]:forjinrange(ii,n+1,i):is_prime[j]=Falsereturn[ifori,primeinenumerate(is_prime)ifprime]解析:埃拉托斯特尼筛法通过标记倍数的方式筛选素数,时间复杂度为O(nloglogn),空间复杂度为O(n)。5.答案:pythonimportredefextract_named_entities(text:str)->list:pattern=r'\b[A-Z][a-z]\b|\b[A-Z][a-z]\s[A-Z][a-z]\b'matches=re.findall(pattern,text)entities=[]formatchinmatches:ifmatchnotinentities:entities.append(match)returnentities解析:使用正则表达式匹配首字母大写的单词或组合,过滤重复实体。二、算法设计题1.答案:pythondefsubsets_with_duplicates(nums:list)->list:res=[]nums.sort()#排序去重subset=[]defbacktrack(start):res.append(subset.copy())foriinrange(start,len(nums)):ifi>startandnums[i]==nums[i-1]:continue#跳过重复subset.append(nums[i])backtrack(i+1)subset.pop()backtrack(0)returnres解析:回溯法解决子集问题,通过排序和跳过重复元素避免重复子集。2.答案:pythondeffind_anagrams(s:str,p:str)->list:iflen(s)<len(p):return[]s_count=[0]26p_count=[0]26forcharinp:p_count[ord(char)-ord('a')]+=1res=[]foriinrange(len(s)-len(p)+1):s_count[ord(s[i])-ord('a')]+=1ifi>=len(p):s_count[ord(s[i-len(p)])-ord('a')]-=1ifs_count==p_count:res.append(i)returnres解析:滑动窗口技术,通过统计窗口内字符频率与目标字符串频率对比,时间复杂度为O(n)。3.答案:pythonfromcollectionsimportdequedefzigzag_level_order(root):ifnotroot:return[]res=[]queue=deque([root])left_to_right=Truewhilequeue:level=[]for_inrange(len(queue)):node=queue.popleft()ifleft_to_right:level.append(node.val)else:level.insert(0,node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)res.append(level)left_to_right=notleft_to_rightreturnres解析:使用队列进行层序遍历,通过布尔值切换方向实现锯齿形遍历。三、系统设计题1.答案:推荐算法:-协同过滤:基于用户相似度(如余弦相似度)或物品相似度,为用户推荐历史上相似用户喜欢的新闻。实现步骤:计算用户/物品相似度矩阵,根据相似度加权推荐。-基于内容的推荐:根据新闻关键词与用户历史阅读内容的相似度进行推荐。实现步骤:提取新闻和用户历史的关键词,计算相似度(如Jaccard相似度),推荐相似新闻。系统架构:-数据存储:使用Redis存储用户历史和实时推荐结果,MySQL存储新闻内容。-推荐服务:使用消息队列(如Kafka)处理用户请求,推荐服务独立部署,支持水平扩展。-负载均衡:使用Nginx或HAProxy分发请求到多个推荐服务实例。2.答案:系统架构:-分布式存储:使用Redis集群存储短链接映射关系,支持高并发读写。-请求处理:-输入:接收长链接请求,生成短ID(如62位随机码)。-输出:将长链接和短ID映射存储到Redis,返回短链接。-解析服务:-用户访问短链接时,Redis快速解析回长链接,缓存热点链接。-使用CDN加速短链接域名解析。负载均衡:-使用Nginx反向代理,将请求分发到多个后端服务实例。-使用熔断器(如Hystrix)防止雪崩效应。四、编码能力题1.答案:pythondefunique_chars(s:str)->str:seen=set()result=[]forcharins:ifcharnotinseen:seen.add(char)result.append(char)return''.join(result)2.答案:pythonclassBST:def__init__(self):self.root=NoneclassNode:def__init__(self,key):self.key=keyself.left=Noneself.right=Nonedefinsert(self,key:int)->None:ifnotself.root:self.root=self.Node(key)returnnode=self.rootwhileTrue:ifkey<node.key:ifnode.left:node=node.leftelse:node.left=self.Node(key)breakelse:ifnode.right:node=node.rightelse:node.right=self.Node(key)breakdefsearch(self,key:int)->bool:node=self.rootwhilenode:ifkey==node.key:returnTrueelifkey<node.key:node=node.leftelse:node=node.rightreturnFalse3.答案:pythondeffind_median(nums:list)->float:nums.sort()n=len(nums)ifn%2==1:returnnums[n//2]else:return(nums[n//2-1]+nums[n//2])/24.答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=self.Node(0,0)self.tail=self.Node(0,0)self.head.next=self.tailself.tail.prev=self.headclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=Nonedefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._remove(node)self._add(node)return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工地应急钢筋施工方案
- 2025-2026学年预言三则教学设计
- 屋面隔汽层铺设施工工艺
- 南县洗马湖公园(洗马湖片区基础设施建设项目)水土保持方案报告书
- 第19课 昼夜交替教学设计小学信息技术(信息科技)五年级冀教版
- Unit 3 Sea Exploration Reading and Thinking 教学设计-2023-2024学年高中英语人教版(2019)选择性必修第四册
- 华能郁南一期200MW农光互补光伏项目水土保持报告书
- 第五单元 妙笔写美景 巧手著奇观 任务群整体教学设计 语文四年级下册统编版
- 数字博物馆导览App虚拟导览课程设计
- 经开区南一路(车城西三路-兴业路段)污水干管建设工程水土保持报告表
- 江宁区秣陵街道招聘社区网格员考试试题附答案详解
- 2026内蒙古乌兰察布察哈尔右翼后旗人民医院招聘备案制专业技术人员20人笔试备考试题及答案解析
- 《电气控制与S7-1200PLC应用》课件 第9章步进电动机控制
- 2026年高考作文素材积累之《给阿嬷的情书》(含教材衔接):一纸牵家万里连国
- 学堂在线 智能医学发展前沿 章节测试答案
- (2026版)《中华人民共和国生态环境法典》培训
- 高考专题复习:小说情节题指导
- 审方与处方审核培训
- 总进度计划表
- 2023年陕西省初中学业水平考试地理中考试卷真题(答案详解)
- GB/T 4458.4-2003机械制图尺寸注法
评论
0/150
提交评论