2026年后端开发工程师面试题及数据库优化含答案_第1页
2026年后端开发工程师面试题及数据库优化含答案_第2页
2026年后端开发工程师面试题及数据库优化含答案_第3页
2026年后端开发工程师面试题及数据库优化含答案_第4页
2026年后端开发工程师面试题及数据库优化含答案_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年后端开发工程师面试题及数据库优化含答案一、编程基础与算法(15分)题目1(5分)请用Python实现一个函数,输入一个非负整数n,返回其对应的二进制表示中1的个数。例如:输入5,返回2(因为5的二进制为101)。pythondefcount_bits(n):你的代码题目2(5分)给定一个排序数组,编写一个函数在该数组中查找一个目标值target。如果找到返回其索引,否则返回-1。要求时间复杂度为O(logn)。pythondefbinary_search(nums,target):你的代码题目3(5分)实现一个LRU(最近最少使用)缓存,支持get和put操作。要求get操作返回对应键的值,如果不存在返回-1;put操作将键值对插入缓存,如果键已存在则更新值。缓存容量为capacity。pythonclassLRUCache:def__init__(self,capacity):初始化defget(self,key):实现defput(self,key,value):实现二、系统设计(20分)题目4(10分)设计一个简单的微博系统,需要支持以下功能:1.用户注册与登录2.发布微博(最多140字符)3.关注/取消关注用户4.获取某个用户的关注者列表5.获取某个用户的关注列表中的用户动态请简述系统架构设计,包括:-关键数据表设计-主要接口设计-技术选型建议(数据库、缓存、消息队列等)题目5(10分)设计一个高并发的短链接系统,要求:1.支持将任意长度的URL转换为固定长度的短链接2.支持从短链接反解析出原始URL3.系统需要具备高可用性和高并发能力4.说明如何保证短链接的全局唯一性三、数据库设计与优化(25分)题目6(10分)设计一个电商订单系统中的核心数据表,需要支持以下场景:1.订单创建、支付、发货、完成、取消等状态流转2.支持按用户、时间、商品等条件查询订单3.支持订单关联多个收货地址请设计主要的数据表结构,并说明表之间的关系。题目7(10分)假设你负责优化一个电商网站的商品详情页查询性能,该页面需要加载商品的基本信息、销量、评价、相关商品等数据。请分析可能的性能瓶颈,并提出优化方案。题目8(5分)解释数据库索引的原理,并说明以下场景应该使用哪种索引类型:1.快速查找某个特定记录2.查询范围数据(如日期区间)3.需要进行排序的操作4.需要保证数据唯一性的场景四、分布式与中间件(20分)题目9(10分)设计一个高并发的秒杀系统,需要支持:1.用户加购商品2.校验库存3.扣减库存4.发送订单请说明系统架构设计,包括如何处理高并发、超卖问题。题目10(10分)解释分布式事务的概念和常见解决方案(如2PC、TCC、Saga等),并说明每种方案的特点和适用场景。五、安全与性能(20分)题目11(10分)列举常见的Web安全漏洞,并说明如何防范。请至少列举5种漏洞类型。题目12(10分)解释什么是缓存穿透、缓存击穿和缓存雪崩,并说明如何解决这些问题。答案与解析编程基础与算法答案题目1答案(5分)pythondefcount_bits(n):count=0whilen:count+=n&1n>>=1returncount解析:使用位运算,每次与1进行与操作,统计最低位的1的个数,然后右移一位继续统计,直到n为0。时间复杂度为O(logn)。题目2答案(5分)pythondefbinary_search(nums,target):left,right=0,len(nums)-1whileleft<=right:mid=left+(right-left)//2ifnums[mid]==target:returnmidelifnums[mid]<target:left=mid+1else:right=mid-1return-1解析:二分查找的基本实现,每次将查找范围缩小一半,时间复杂度为O(logn)。题目3答案(5分)pythonclassLRUCache:def__init__(self,capacity):self.capacity=capacityself.cache={}self.order=[]defget(self,key):ifkeyinself.cache:self.order.remove(key)self.order.append(key)returnself.cache[key]return-1defput(self,key,value):ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)>=self.capacity:self.cache.pop(self.order.pop(0))self.cache[key]=valueself.order.append(key)解析:使用字典存储键值对,列表维护使用顺序。get时将键移到末尾表示最近使用,put时如果已存在则更新,如果超出容量则删除最久未使用的元素。系统设计答案题目4答案(10分)系统架构设计:1.关键数据表设计:-users:存储用户信息(id,username,password,email等)-tweets:存储微博内容(id,user_id,content,created_at等)-followships:存储关注关系(follower_id,followee_id)-likes:存储点赞关系(user_id,tweet_id)2.主要接口设计:-注册:POST/api/users-登录:POST/api/login-发布微博:POST/api/tweets-关注用户:POST/api/follow/{followee_id}-获取关注者:GET/api/users/{user_id}/followers-获取动态:GET/api/users/{user_id}/timeline3.技术选型建议:-数据库:MySQL(关系型数据)+Redis(缓存热点数据)-缓存:Redis缓存用户信息、热门微博等-消息队列:Kafka处理异步操作如通知-缓存穿透:使用布隆过滤器拦截非法请求-负载均衡:Nginx分发请求题目5答案(10分)短链接系统设计:1.技术实现:-使用Base62编码将长URL转换为短URL-将短URL映射到原始URL的数据库表-使用Redis缓存热点短链接2.高可用性:-使用分布式数据库(如TiKV)-部署多个短链接服务节点-使用DNS轮询和负载均衡3.全局唯一性:-使用雪花算法生成唯一ID-或者使用随机码+校验和的方式4.架构图:用户请求->Nginx负载均衡->短链接服务||VVRedis缓存分布式数据库数据库设计与优化答案题目6答案(10分)订单系统数据表设计:sqlCREATETABLEorders(idBIGINTAUTO_INCREMENTPRIMARYKEY,user_idBIGINTNOTNULL,product_idBIGINTNOTNULL,total_amountDECIMAL(10,2)NOTNULL,statusENUM('created','paid','shipped','completed','cancelled')NOTNULL,created_atTIMESTAMPDEFAULTCURRENT_TIMESTAMP,updated_atTIMESTAMPDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,FOREIGNKEY(user_id)REFERENCESusers(id),FOREIGNKEY(product_id)REFERENCESproducts(id));CREATETABLEorder_addresses(idBIGINTAUTO_INCREMENTPRIMARYKEY,order_idBIGINTNOTNULL,addressTEXTNOTNULL,is_defaultBOOLEANDEFAULTFALSE,FOREIGNKEY(order_id)REFERENCESorders(id)ONDELETECASCADE);解析:orders表存储订单核心信息,status字段使用枚举类型限制状态值。order_addresses表存储收货地址,一个订单可以关联多个地址。题目7答案(10分)商品详情页查询优化:1.性能瓶颈分析:-多表联合查询导致性能下降-缓存命中率低-热点数据未缓存-索引缺失或不当2.优化方案:-缓存优化:-使用Redis缓存商品基本信息、销量、评价等-设置合理的过期时间-使用Hash结构存储关联数据-SQL优化:-使用JOIN代替子查询-为关键字段添加索引(商品ID、用户ID等)-使用EXPLAIN分析查询计划-数据分离:-将商品评价、相关商品等数据分离存储-使用异步加载方式加载非核心数据-硬件优化:-使用更快的存储介质-升级数据库服务器题目8答案(5分)数据库索引类型选择:1.快速查找特定记录:B-Tree索引(如MySQL默认索引)2.查询范围数据:R-Tree索引(空间范围查询)或B-Tree索引(日期范围查询)3.需要排序的操作:使用覆盖索引(包含排序所需所有字段)4.保证数据唯一性:唯一索引(UNIQUE约束)解析:不同场景选择不同索引类型,B-Tree适用于精确匹配和范围查询,唯一索引保证数据不重复,R-Tree适用于空间数据。分布式与中间件答案题目9答案(10分)秒杀系统设计:1.架构设计:-使用Redis实现分布式锁-使用消息队列(Kafka)处理订单异步创建-库存预扣减+最终扣减模式2.处理高并发:-使用读写分离-设置合理的超时时间-使用限流措施3.防止超卖:-库存预扣减,成功后才扣减-使用分布式锁保证原子性-使用事务保证数据一致性4.系统架构图:用户请求->API网关->业务服务||VVRedis锁消息队列||VV库存服务订单服务题目10答案(10分)分布式事务解决方案:1.2PC(两阶段提交):-特点:强一致性,实现简单-适用场景:金融系统等要求严格一致性的场景2.TCC(Try-Confirm-Cancel):-特点:最终一致性,实现复杂-适用场景:订单系统等需要补偿的业务场景3.Saga:-特点:异步执行,补偿事务-适用场景:长事务场景4.本地消息表:-特点:简单实现最终一致性-适用场景:对一致性要求不高的场景解析:不同方案适用于不同场景,2PC最严格但最复杂,TCC和Saga适用于需要补偿的业务,本地消息表实现简单。安全与性能答案题目11答案(10分)常见Web安全漏洞及防范:1.SQL注入:使用预编译语句和参数化查询2.XSS跨站脚本:对用户输入进行过滤和转义3.CSRF跨站请求伪造:使用CSRFToken验证4.权限绕过:严格验证用户权限5.文件上传漏洞:限制文件类型和大小,使用沙箱执行6.DDoS攻击:使用CDN和流量清洗服务7.敏感信息

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论