版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年高级工程师面试题集与解析一、编程与算法题(共5题,每题10分,总分50分)1.题目:给定一个字符串`s`,其中包含字母、数字和特殊字符,请编写一个函数,统计其中字母和数字的总数,并按字母优先、数字次序的规则进行排序,返回排序后的字符串。例如,输入`s="a1b2c3!@#d4"`,输出应为`"abcd123"`。2.题目:实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。缓存容量为`capacity`,当缓存满时,需要淘汰最久未使用的元素。请用Python或Java实现,并说明时间复杂度。3.题目:给定一个链表,判断其是否为回文链表。例如,输入`1->2->2->1`,返回`True`;输入`1->2->3`,返回`False`。请不使用额外空间实现。4.题目:设计一个无重复字符的最长子串查找函数,输入`s="abcabcbb"`,返回`"abc"`(长度为3)。要求时间复杂度为O(n)。5.题目:实现二叉树的层序遍历(按从上到下、从左到右的顺序),例如输入`[3,9,20,null,null,15,7]`,输出`[[3],[9,20],[15,7]]`。请用递归或迭代方式实现。答案与解析1.答案:pythondefsort_letters_numbers(s):letters=[cforcinsifc.isalpha()]digits=[cforcinsifc.isdigit()]return''.join(letters+digits)解析:-列表推导式分别提取字母和数字,然后合并。字母优先是因为先遍历字母字符,数字次序是因为数字字符在提取时按顺序排列。-时间复杂度:O(n),其中n为字符串长度。2.答案(Python实现):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)解析:-使用哈希表`cache`存储键值对,`order`列表记录访问顺序。-`get`时移动元素到末尾,`put`时先删除最久未使用元素(如果已满)。-时间复杂度:`get`和`put`均为O(1)。3.答案(Python实现):pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefisPalindrome(head:ListNode)->bool:slow,fast=head,headstack=[]whilefastandfast.next:stack.append(slow.val)slow=slow.nextfast=fast.next.nextiffast:slow=slow.nextwhileslow:ifslow.val!=stack.pop():returnFalseslow=slow.nextreturnTrue解析:-使用快慢指针找到中点,前半部分入栈,后半部分与栈对比。-时间复杂度:O(n),空间复杂度:O(n/2)。4.答案(Python实现):pythondeflength_of_longest_substring(s:str)->int: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`移动维护无重复子串。-时间复杂度:O(n),空间复杂度:O(min(m,n)),m为字符集大小。5.答案(Python实现):pythondeflevelOrder(root):ifnotroot:return[]result,queue=[],[root]whilequeue:level=[]for_inrange(len(queue)):node=queue.pop(0)level.append(node.val)ifnode.left:queue.append(node.left)ifnode.right:queue.append(node.right)result.append(level)returnresult解析:-迭代方式,每次处理一层的节点,将子节点加入队列。-时间复杂度:O(n),空间复杂度:O(n)。二、系统设计题(共3题,每题15分,总分45分)1.题目:设计一个高并发的短链接系统,要求:-支持每天生成数百万个短链接。-链接长度为6位(例如`a1b2c3`),使用字母和数字组合。-支持快速跳转(将短链接解析为原始URL)。2.题目:设计一个分布式限流系统,要求:-支持全局限流(例如每秒不超过1000个请求)。-高可用,单个节点故障不影响整体。-可配置不同资源(如API、用户)的限流策略。3.题目:设计一个实时消息推送系统,要求:-支持百万级用户,消息可分类推送(如订单通知、系统公告)。-消息可靠性保证,未送达需重试。-低延迟,消息发送后100ms内到达客户端。答案与解析1.答案:核心方案:-使用自增ID映射到短链接,采用哈希算法(如base62)压缩。-缓存层(Redis)加速短链接解析。伪代码:pythondefgenerate_short_link(id):chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"base=len(chars)short_link=""whileid:id,rem=divmod(id,base)short_link=chars[rem]+short_linkreturnshort_link.zfill(6)defresolve_short_link(short_link):returnredis.get(short_link)ordatabase_query(short_link)解析:-ID自增确保唯一性,base62编码减少长度。-Redis缓存热点短链接,数据库存储全部映射。2.答案:核心方案:-使用Redis分布式锁+过期时间实现令牌桶算法。-节点间共享配置,通过配置中心动态调整。伪代码:pythondefis_allowed(user_id,resource):lock_key=f"rate_limit:{resource}:{user_id}"withredis.lock(lock_key,timeout=1):current_count=redis.incr(lock_key)ifcurrent_count>config[resource]["limit"]:returnFalseredis.expire(lock_key,config[resource]["interval"])returnTrue解析:-令牌桶算法动态控制流量,Redis锁保证原子性。-配置中心支持多资源独立限流。3.答案:核心方案:-消息队列(Kafka)解耦生产者与消费者。-用户订阅中心维护分类消息,推送服务异步触达客户端。伪代码:python消息生产defsend_message(user_id,category,message):kafka_producer.send(f"messages-{category}",json.dumps({user_id:message}))消息消费defconsume_messages():formsginkafka_consumer:user_id,content=json.loads(msg)push_to_client(user_id,content)推送服务defpush_to_client(user_id,content):WebSocket或APNS等推送pass解析:-Kafka保证高吞吐和可靠性,分类订阅支持精准推送。-异步推送避免阻塞主服务。三、数据库与存储题(共3题,每题15分,总分45分)1.题目:设计一个电商订单表,包含订单号、用户ID、商品列表(JSON格式)、订单状态、创建时间等字段。要求:-支持高效查询同一用户的订单。-支持按订单状态和创建时间分页查询。-订单商品列表变更时,需保证数据一致性。2.题目:解释数据库中的“聚簇索引”和“非聚簇索引”的区别,并说明在什么场景下选择哪种索引。3.题目:设计一个高可用存储方案,要求:-支持多地域备份,数据丢失概率低于0.01%。-支持冷热数据分层存储(热数据SSD,冷数据HDD)。-数据写入延迟低于5ms。答案与解析1.答案:表结构:sqlCREATETABLEorders(order_idBIGINTPRIMARYKEYAUTO_INCREMENT,user_idBIGINT,statusENUM('pending','paid','shipped','completed','cancelled'),created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,productsJSON);索引设计:sqlCREATEINDEXidx_user_idONorders(user_id);CREATEINDEXidx_status_created_atONorders(status,created_at);一致性保证:-使用事务包裹订单创建和商品变更,JSON更新前先锁定订单行。-Redis缓存热点用户订单,通过发布订阅机制同步变更。2.答案:聚簇索引:-数据行物理存储顺序与索引顺序一致(如MySQLInnoDB的聚集索引)。-适合高频查询的列(如主键)。非聚簇索引:-索引存储键值和指向数据行的指针(如MySQLMyISAM)。-适合多列组合查询。场景选择:-聚簇索引:订单号作为主键,直接加速查询。-非聚簇索引:按用户ID+状态查询时,创建额外索引。3.答案:架构方案:-主从复制+异地多活(如阿里云DBS)。-OSS分层存储(热数据OSSStandard,冷数据OSSArchive)。伪代码:sql--主库写入@app.route("/order",methods=["POST"])defcreate_order():db.write(order_data)oss.put_object("hot-bucket",order_data)oss.put_object("cold-bucket",order_data,storage_class="Archive")--查询时自动路由defquery_order(order_id):data=db.read(order_id)ifnotdata:data=oss.get_object("hot-bucket",order_id)ifnotdata:data=oss.get_object("cold-bucket",order_id,storage_class="Archive")returndata解析:-多地域复制保证数据冗余,分层存储降低成本。-主库写入时同步到OSS,查询时按层级顺序访问。四、网络与安全题(共3题,每题15分,总分45分)1.题目:解释TCP的三次握手过程,并说明为什么不能省略任何一次握手。2.题目:设计一个DDoS防护方案,要求:-支持IP黑白名单。-可自动识别并限流异常流量。-低误伤率,正常用户访问不受影响。3.题目:解释TLS握手过程,并说明如何防止中间人攻击。答案与解析1.答案:三次握手:1.客户端发送SYN=1,随机数seq,等待服务器确认。2.服务器回复SYN=1,ACK=seq+1,随机数ack,客户端确认。3.客户端回复ACK=ack+1,完成连接建立。必要性:-第一次握手防止服务器重放旧连接。-第二次握手防止客户端重放旧连接。-第三次握手确保双方时钟同步。2.答案:方案:-WAF+云防火墙(如腾讯云CC攻击防护)。-流量清洗中心(如阿里云ASG)。策略:pythondefdetect_ddos(ip,request_count):ifipinblacklist:block_ip(ip)elifipnotinwhitelist:ifrequest_count>config["threshold"]:limit_rate(ip)解析:-基于频率和地理位置识别异常,动态调整限流阈值。-误伤优化:优先检查HTTPS请求中的User-Agent等特征。3.答案:TLS握手:1.客户端发送ClientHello(协议版本、证书请求等)。2.服务器回复ServerHello(协商版本、证书、密钥交换)。3.客户端验证证书,生成预主密钥,发送ClientKeyExchange。4.服务器解密并生成预主密钥,完成握手。防中间人:-验证证书颁发机构(CA)有效性。-使用HTTPS,客户端拒绝自签名证书。五、分布式与中间件题(共3题,每题15分,总分45分)1.题目:解释C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同模板扫描(3篇)
- 铝板招牌施工方案(3篇)
- 电力施工方案管理(3篇)
- 更换蹲坑施工方案(3篇)
- 车位营销展示方案(3篇)
- 回填岩石施工方案(3篇)
- 定钻施工方案(3篇)
- 人防地下工程环境监测方案
- 2025年山西省脑瘫康复医院公开招聘编制外合同制工作人员备考题库及答案详解参考
- 冷链药品包装管理制度(3篇)
- 2025年总工会招聘考试工会知识模拟试卷及答案
- 招聘费用专项审计方案(3篇)
- 计算机组成原理(第2版)课后习题解答 谭志虎
- 装配式建筑施工重点难点及保证措施
- 主动脉夹层的护理常规
- 肉牛合作养殖方案(3篇)
- 骨盆骨折患者麻醉管理要点
- 2025贵阳人文科技学院教师招聘考试试题
- 高职院校产教融合共同体建设国内外研究动态及启示
- T/CWAN 0068-2023铜铝复合板
- 儿童寓言故事-乌鸦喝水
评论
0/150
提交评论