版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年后端工程师面试题及解析一、编程基础(3题,每题10分,共30分)题目1:请用Python实现一个函数,输入一个整数列表,返回其中所有奇数的平方和。要求:时间复杂度O(n),不使用任何内置函数。题目2:用Java编写一个方法,输入一个字符串,返回该字符串中每个字符出现的次数,并以`Map<Character,Integer>`形式返回。要求:忽略大小写,处理空字符串情况。题目3:用C++实现一个线程安全计数器,要求:支持原子操作,防止多线程并发时的数据竞争。答案及解析题目1答案:pythondefsum_of_odd_squares(nums):total=0fornuminnums:ifnum%2!=0:total+=numnumreturntotal解析:-直接遍历列表,判断奇数后平方累加,时间复杂度O(n)。-未使用`sum()`或`filter()`等内置函数,避免隐式额外开销。-可优化为一次遍历同时处理,但题目未要求。题目2答案:javaimportjava.util.Map;importjava.util.HashMap;publicMap<Character,Integer>countChars(Stringinput){Map<Character,Integer>result=newHashMap<>();if(input==null||input.isEmpty())returnresult;input=input.toLowerCase();for(charc:input.toCharArray()){result.put(c,result.getOrDefault(c,0)+1);}returnresult;}解析:-首先处理空字符串情况,避免NPE。-使用`toLowerCase()`统一为小写,忽略大小写。-`getOrDefault`简化计数逻辑,避免重复判断。题目3答案:cppinclude<atomic>include<thread>classSafeCounter{private:std::atomic<int>count;public:SafeCounter():count(0){}voidincrement(){count.fetch_add(1,std::memory_order_relaxed);}intget(){returncount.load(std::memory_order_relaxed);}};解析:-使用`std::atomic<int>`保证原子性,避免加锁开销。-`fetch_add`为原子操作,`memory_order_relaxed`适用于无依赖场景。-若需更高同步性,可改为`memory_order_seq_cst`。二、数据库与SQL(3题,每题10分,共30分)题目4:假设有表`orders`(`id`,`user_id`,`total`,`order_date`)和`users`(`id`,`name`,`city`),写出SQL查询:返回每个城市的用户平均订单金额,且只显示平均金额大于100的用户。题目5:用PostgreSQL编写一个事务,插入一条订单数据到`orders`表,但要求:如果插入过程中`users`表中对应的`user_id`不存在,则回滚整个事务。题目6:解释PostgreSQL中的MVCC(多版本并发控制)原理,并说明它与MySQLInnoDB的区别。答案及解析题目4答案:sqlSELECTcity,AVG(total)ASavg_orderFROMordersJOINusersONorders.user_id=users.idGROUPBYcityHAVINGAVG(total)>100;解析:-使用`JOIN`关联`orders`和`users`表,确保城市信息完整。-`GROUPBYcity`按城市分组,`AVG(total)`计算平均订单金额。-`HAVING`过滤分组后的结果,仅保留平均值大于100的记录。题目5答案:sqlBEGIN;INSERTINTOorders(user_id,total,order_date)VALUES(123,200,NOW());IFNOTEXISTS(SELECT1FROMusersWHEREid=123)ROLLBACK;COMMIT;解析:-使用`BEGIN`开启事务。-插入订单前检查`users`表中是否存在`user_id`,不存在则回滚。-注意:PostgreSQL无`IFNOTEXISTS`语法,需用子查询+`ROLLBACK`实现。题目6答案:MVCC原理:-PostgreSQL通过在每次事务操作时创建数据行的快照版本来实现MVCC,确保事务隔离。-数据行包含多个版本(如`xmin`,`xmax`表示可见范围),查询根据事务ID选择可见版本。与MySQLInnoDB区别:-PostgreSQL的MVCC更灵活,支持多版本,隔离级别默认`READCOMMITTED`。-MySQLInnoDB默认`REPEATABLEREAD`,使用Next-KeyLock避免幻读。三、系统设计(2题,每题15分,共30分)题目7:设计一个支持高并发的短链接系统,要求:1.输入长链接后返回短链接,支持自定义别名。2.系统需支持全球用户访问,可用性99.9%。3.短链接访问时需记录UV和PV数据。题目8:设计一个微博系统的消息推送服务,要求:1.支持实时推送(如新动态、关注者更新)。2.若用户离线,需支持离线消息缓存。3.系统需保证消息不丢失。答案及解析题目7答案:架构设计:1.短链接生成:-使用哈希算法(如SHA256)将长链接映射为短码(如62进制)。-支持自定义别名,需校验唯一性。2.全球可用性:-使用分布式缓存(RedisCluster)存储短码->长链接映射。-面向全球部署CDN节点,避免延迟。3.UV/PV统计:-通过Redis的`INCR`原子操作统计访问量。-日志异步写入Hadoop/ClickHouse用于长期分析。题目8答案:架构设计:1.实时推送:-使用WebSocket或MQTT实现客户端实时连接。-服务端收到更新后直接推送给在线用户。2.离线消息:-若用户离线,消息写入Kafka,客户端启动后拉取。-使用Redis过期键控制缓存时长。3.不丢失保证:-消息持久化到Kafka,配合幂等订阅避免重复消费。-重试机制+死信队列处理失败消息。四、分布式与微服务(2题,每题15分,共30分)题目9:解释CAP理论,并说明在分布式存储中如何选择一致性(Consistency)、可用性(Availability)和分区容错性(PartitionTolerance)。题目10:设计一个秒杀系统,要求:1.支持高并发请求,限制每人限购1件。2.需防止超卖和并发问题。答案及解析题目9答案:CAP理论:-一致性:所有节点数据实时同步。-可用性:系统持续响应请求,不返回错误。-分区容错性:网络分区时系统仍能运行。选择策略:-分布式存储通常优先`AP`(如Cassandra),牺牲一致性换取可用性。-关键业务(如金融)需`CP`(如Raft协议),牺牲可用性保证一致性。题目10答案:架构设计:1.限购逻辑:-用户请求先查询Redis缓存(记录购买状态)。-未购买则扣减库存(库存表需加锁,如使用Lua脚本)。2.防止超卖:-库存表使用乐观锁(版本号)或悲观锁(行锁)。-超卖后通过补偿服务(如消息队列)恢复库存。五、网络安全与性能优化(2题,每题15分,共30分)题目11:解释OWASPTop10中的“SQL注入”原理,并说明如何防御。题目12:优化一个慢SQL查询(执行时间>1s),给出至少3种优化方法。答案及解析题目11答案:SQL注入原理:-攻击者通过输入恶意SQL片段(如`'OR'1'='1`),绕过认证或篡改查询。防御方法:1.预编译语句(PreparedStatements):防止参数被解释为SQL代码。2.输入验证:限制输入类型(如仅数字、正则校验)。3.最小权限原则:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数据基础 可视化 大纲
- 常州市溧阳中学高三地理一轮复习第二章城市化学案
- 2026年职业能力(市场敏感度)考题及答案
- 2025年中职无人机应用(航拍测绘技术)试题及答案
- 2025年高职护理(护理综合技能考核)试题及答案
- 2025-2026年五年级语文(综合应用)上学期期中测试卷
- 2025年高职数控技术(数控机床电气控制)试题及答案
- 2025年大学电工电子技术与技能(电路设计应用)试题及答案
- 2025年高职智能制造(智能调试实操)试题及答案
- 大学(环境生态工程)生态修复技术2026年综合测试题
- 学堂在线 研究生学术与职业素养讲座 章节测试答案
- 部编版五年级语文上册同步作文1-8单元习作(全册)
- 低频函数信号发生器设计-毕业设计
- 《中国特色社会主义》课程标准
- LY/T 1530-2020刨花板生产综合能耗
- GB/T 622-1989化学试剂盐酸
- 新能源有限公司光伏电站现场应急处置方案汇编
- 人美版美术九年级上册第9课《民间美术的色彩搭配》课件
- 西方语言学流派漫谈Schools of Linguistics some random 4
- 健康社会决定论课件
- 公路市政项目施工现场管理实施细则
评论
0/150
提交评论