版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年程序员面试宝典:编程面试题及答案解析第一部分:算法与数据结构(共5题,每题10分)1.题目(10分):给你一个无重复元素的数组`nums`和一个目标值`target`,请找出数组中和为目标值`target`的两个数,并返回它们的数组下标。示例:输入:`nums=[2,7,11,15]`,`target=9`输出:`[0,1]`(因为`nums[0]+nums[1]=2+7=9`)2.题目(10分):实现一个函数`lengthOfLongestSubstring(s)`,输入一个字符串`s`,返回其中不重复字符的最长子串的长度。示例:输入:`s="abcabcbb"`输出:`3`(因为`"abc"`是长度最长的无重复字符子串)3.题目(10分):给定一个包含`n`个整数的数组`nums`,判断数组中是否存在三个元素`a`、`b`、`c`,使得`a+b+c=0`。请找出所有不重复的三元组。示例:输入:`nums=[-1,0,1,2,-1,-4]`输出:`[[-1,-1,2],[-1,0,1]]`4.题目(10分):实现一个函数`merge(intervals)`,合并所有重叠的区间。示例:输入:`intervals=[[1,3],[2,6],[8,10],[15,18]]`输出:`[[1,6],[8,10],[15,18]]`(因为`[1,3]`和`[2,6]`可以合并为`[1,6]`)5.题目(10分):给定一个二叉树,判断它是否是高度平衡的二叉树。定义:一棵二叉树每个节点的左右两个子树的高度差的绝对值不超过1,且左右子树都是高度平衡二叉树。示例:输入:3/\920/\157输出:`true`第二部分:系统设计(共3题,每题15分)1.题目(15分):设计一个支持以下操作的简单缓存(LRU缓存):-`get(key)`:返回给定键的值,如果键不存在则返回`-1`。-`put(key,value)`:如果键已存在,则更新其值;如果键不存在,则添加该键值对。当缓存容量达到限制时,删除最久未使用的键。要求:-时间复杂度:`O(1)`。-请说明数据结构和实现思路。2.题目(15分):设计一个简单的微博系统,需要支持以下功能:-用户发布微博(包含文字和发布时间)。-用户关注其他用户。-用户查看自己关注用户的最新`N`条微博。要求:-说明核心数据结构(如哈希表、队列等)和系统架构。-提出可能的优化方案(如分页加载、消息队列等)。3.题目(15分):设计一个短链接生成服务(如`tinyurl`),需要支持:-将长链接转换为短链接。-通过短链接解析为原始长链接。要求:-说明短链接的生成算法(如Base62编码)。-考虑高并发和分布式场景下的设计。第三部分:编程语言基础(共4题,每题8分)1.题目(8分):解释Java中的`volatile`关键字的作用和原理,并说明它与`synchronized`的区别。2.题目(8分):在Python中,如何实现一个线程安全的计数器?3.题目(8分):C++中,`const`关键字可以修饰哪些成员变量?请举例说明。4.题目(8分):Go语言中的`channel`和`goroutine`有什么区别?如何避免死锁?第四部分:数据库与SQL(共4题,每题10分)1.题目(10分):编写SQL查询,找出所有订单金额大于1000的客户姓名和订单总数。示例:Orders表:+-++++|id|customer_id|amount|date|+-++++|1|1|1200|2023-01-01||2|2|500|2023-01-02||3|1|800|2023-01-03|+-++++Customers表:+-+-+|id|name|+-+-+|1|Alice||2|Bob|+-+-+参考答案:sqlSELECT,COUNT(o.id)ASorder_countFROMCustomerscJOINOrdersoONc.id=o.customer_idWHEREo.amount>1000GROUPBY;2.题目(10分):解释数据库事务的ACID特性,并说明`脏读`、`不可重复读`和`幻读`的区别。3.题目(10分):设计一个简单的电商数据库表结构,至少包含`商品`、`订单`、`用户`三个表,并说明表之间的关系。4.题目(10分):编写SQL查询,找出所有订单金额按降序排列的前3个订单的详细信息。第五部分:网络与系统(共3题,每题12分)1.题目(12分):解释TCP三次握手和四次挥手的过程,并说明为什么不能取消已经建立的连接。2.题目(12分):设计一个简单的DNS解析流程,并说明常见的DNS缓存问题及解决方案。3.题目(12分):在Linux系统中,如何查看当前系统的负载?解释`top`命令中`loadaverage`的含义。答案与解析第一部分:算法与数据结构1.答案(10分):pythondeftwoSum(nums,target):num_to_index={}fori,numinenumerate(nums):complement=target-numifcomplementinnum_to_index:return[num_to_index[complement],i]num_to_index[num]=ireturn[]解析:使用哈希表(字典)记录每个数字及其索引,遍历时直接查找`target-num`是否已存在,时间复杂度`O(n)`。2.答案(10分):pythondeflengthOfLongestSubstring(s):char_set=set()left=0max_len=0forrightinrange(len(s)):whiles[right]inchar_set:char_set.remove(s[left])left+=1char_set.add(s[right])max_len=max(max_len,right-left+1)returnmax_len解析:滑动窗口技术,左指针`left`和右指针`right`维护当前无重复字符的子串,哈希集合记录窗口内的字符。3.答案(10分):pythondefthreeSum(nums):nums.sort()result=[]n=len(nums)foriinrange(n):ifi>0andnums[i]==nums[i-1]:continueleft,right=i+1,n-1whileleft<right:total=nums[i]+nums[left]+nums[right]iftotal==0:result.append([nums[i],nums[left],nums[right]])whileleft<rightandnums[left]==nums[left+1]:left+=1whileleft<rightandnums[right]==nums[right-1]:right-=1left+=1right-=1eliftotal<0:left+=1else:right-=1returnresult解析:先排序,固定一个数,双指针查找另外两个数,避免重复解。4.答案(10分):pythondefmerge(intervals):ifnotintervals:return[]intervals.sort(key=lambdax:x[0])merged=[]forintervalinintervals:ifnotmergedormerged[-1][1]<interval[0]:merged.append(interval)else:merged[-1][1]=max(merged[-1][1],interval[1])returnmerged解析:先按起点排序,然后合并重叠的区间。5.答案(10分):pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightdefisBalanced(root):defcheck(node):ifnotnode:return0,Trueleft_height,left_balanced=check(node.left)right_height,right_balanced=check(node.right)returnmax(left_height,right_height)+1,left_balancedandright_balancedandabs(left_height-right_height)<=1returncheck(root)[1]解析:递归计算左右子树高度,判断高度差是否不超过1且子树均平衡。第二部分:系统设计1.答案(15分):数据结构:-使用哈希表存储`key->value`和`key->(value,timestamp)`,同时维护一个双向链表记录访问顺序。-双向链表头部为最近访问节点,尾部为最久未访问节点。实现思路:-`get(key)`:1.在哈希表中查找`key`,若存在则:-将节点移动到双向链表头部(更新时间戳)。-返回值。2.若不存在,返回`-1`。-`put(key,value)`:1.若`key`已存在:-更新值为`value`,并更新时间戳。-将节点移动到双向链表头部。2.若`key`不存在:-创建新节点`[value,timestamp]`,加入哈希表。-将节点移动到双向链表头部。3.如果链表长度超过容量`capacity`,删除链表尾部节点(最久未访问节点),并从哈希表中删除对应`key`。2.答案(15分):核心数据结构:-用户表:`{user_id:{name,following_ids}}`。-微博表:`{tweet_id:{user_id,content,timestamp}}`。-查询缓存:使用LRU缓存存储用户关注的最新`N`条微博。系统架构:-用户发布微博时,写入微博表,并更新关注者的LRU缓存。-用户查看微博时,从LRU缓存中读取,若无则从微博表按时间倒序分页加载。-使用消息队列(如Kafka)异步更新关注者的缓存。优化方案:-分页加载:按时间降序返回`N`条微博,支持`next_page_token`。-索引优化:为`user_id`和`timestamp`添加索引。3.答案(15分):短链接生成:-使用Base62编码(数字+小写字母+大写字母,共62个字符)。-将长链接哈希为固定长度的随机字符串(如`8位Base62`)。-哈希函数可使用`hashlib`或自定义算法,避免冲突。分布式设计:-使用Redis或分布式缓存存储短链接映射关系。-高并发时,通过负载均衡分摊请求到多个节点。-考虑301重定向,避免短链接被爬取。第三部分:编程语言基础1.答案(8分):`volatile`的作用:-禁止指令重排序,保证内存可见性。-适用于单线程场景,如自增计数器。与`synchronized`区别:-`volatile`仅保证单次读/写的原子性,不支持复合操作(如`i++`)。-`synchronized`支持方法或代码块的原子性,开销更大。2.答案(8分):pythonfromthreadingimportLockclassThreadSafeCounter:def__init__(self):self.value=0self.lock=Lock()defincrement(self):withself.lock:self.value+=1defget(self):withself.lock:returnself.value解析:使用`Lock`确保`increment`和`get`操作的原子性。3.答案(8分):`const`可以修饰:-成员变量:`constintx;`-函数参数:`voidfunc(constint¶m);`-类成员函数:`constvoidfunc(){}`(不可修改对象状态)示例:cppclassMyClass{public:constintMAX_SIZE=100;//静态常量voidsetX(constint&x){this->x=x;}//const引用参数voidprint()const{std::cout<<x;}//const成员函数private:intx;};4.答案(8分):`channel`:Go的管道,用于`goroutine`间通信。`goroutine`:轻量级线程,由Go运行时管理。避免死锁:-确保所有`channel`操作成对出现(发送/接收)。-使用`select`语句处理超时或多个`channel`。-避免`bufferedchannel`的循环发送。第四部分:数据库与SQL1.答案(10分):参考答案已在题目中给出。2.答案(10分):ACID特性:-原子性(Atomicity):事务要么全部完成,要么全部回滚。-一致性(Consistency):事务执行后数据库状态满足约束。-隔离性(Isolation):并发事务互不干扰。-持久性(Durability):事务提交后结果永久保存。脏读/不可重复读/幻读:-脏读:事务A读取事务B未提交的数据。-不可重复读:事务A多次读取同一数据,因事务B提交
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年长江职业学院马克思主义基本原理概论期末考试笔试真题汇编
- 康复护理发展培训课件
- 应用介绍课件
- 学前教育托育服务合同
- 机场地面服务合作协议
- 应急车辆换胎培训课件
- 2026年量子计算应用研究合同协议
- 外包DevOps服务2026年合作协议
- 应急局安全生产培训内容课件
- 企业调休制度
- 2025年全面质量管理体系建设项目可行性研究报告
- 光疗课件教学课件
- 北师大版二上《参加欢乐购物活动》(课件)
- 基坑土方开挖专项施工方案(完整版)
- 招标人主体责任履行指引
- 健康管理师考试题库及答案题库大全
- 雨课堂学堂云在线《中国传统艺术-篆刻、书法、水墨画体验与欣赏(哈工 )》单元测试考核答案
- 公墓骨灰安葬协议书
- 2025国家粮食储备局考试真题与答案
- 2025年汽车后市场汽车维修行业技术更新换代趋势可行性研究报告
- 2024年一建网络图案例专题
评论
0/150
提交评论