版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026计算机岗面试易错题集题型分析含解析考试时间:______分钟总分:______分姓名:______1.编程题:实现一个LRU(最近最少使用)缓存,要求get和put操作的时间复杂度均为O(1)。缓存容量为正整数,支持以下操作:-get(key):获取key对应的value,如果key不存在,返回-1。-put(key,value):如果key存在,更新value;如果key不存在,插入新的key-value对,当容量达到上限时,移除最久未使用的key-value对。2.编程题:反转一个单链表。定义链表节点为:structListNode{intval;ListNode*next;ListNode(intx):val(x),next(nullptr){}};给定链表的头节点head,返回反转后的链表头节点。3.编程题:给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的两个整数,并返回它们的数组下标。假设每种输入只会对应一个答案,且数组中同一个元素不能重复使用。4.编程题:使用多线程实现一个生产者-消费者模型。生产者生产随机整数,消费者消费整数并打印。使用ReentrantLock和Condition实现线程同步,队列容量为10。5.系统设计题:设计一个高并发的“短链接生成与重定向服务”,要求支持每秒10万次请求,短链接长度不超过8位(使用62进制:a-z/A-Z/0-1)。请描述架构设计,包括核心模块(如短码生成、存储、缓存)、高并发处理方案(如负载均衡、限流)和容灾措施。6.系统设计题:设计一个电商订单系统的架构,支持高并发写入和查询。需求包括:订单数据存储、订单状态更新、库存扣减、订单查询(按用户ID、时间范围)。请说明技术选型(如数据库、缓存、消息队列)和优化策略(如分库分表、缓存设计)。7.数据库题:给定用户表结构如下:CREATETABLEuser(idINTPRIMARYKEYAUTO_INCREMENT,usernameVARCHAR(50)NOTNULL,emailVARCHAR(100)NOTNULL,create_timeDATETIMENOTNULL);编写SQL查询:查询2023年注册的用户数量,按注册月份分组,并按月份升序排序。8.数据库题:解释MySQL联合索引的最左前缀原则,并举例说明违反该原则会导致索引失效的场景。9.数据库题:设计一个SQL优化方案,针对以下查询:SELECT*FROMorder_detailWHEREuser_id=100ANDstatus=1ANDcreate_time>='2023-01-01'ORDERBYcreate_timeDESCLIMIT10;假设order_detail表有联合索引(user_id,status,create_time),说明优化点。10.操作系统题:解释进程上下文切换的过程,并说明多线程环境下上下文切换的开销来源。11.操作系统题:比较进程与线程的区别,包括资源分配、CPU调度开销和通信方式。12.操作系统题:解释内存泄漏的原因及其对系统性能的影响,并说明如何检测内存泄漏。13.计算机网络题:详细解释TCP三次握手的过程,并说明为什么不是两次握手。14.计算机网络题:解释HTTP和HTTPS的区别,并说明HTTPS如何保证数据传输的安全性。15.计算机网络题:解释TCP拥塞控制机制中的慢开始、拥塞避免、快重传和快恢复阶段的作用。16.计算机网络题:选择题:TCP连接建立时,第三次握手的作用是:A.确认服务器的SYN请求B.确认客户端的ACKC.防止已失效的连接请求导致资源浪费D.初始化序列号17.计算机网络题:多选题:以下哪些场景会导致MySQL索引失效?A.WHERE条件中使用函数操作(如YEAR(create_time)=2023)B.联合索引查询时未遵循最左前缀原则(如索引(a,b,c),查询条件仅用b)C.使用SELECT*查询所有字段D.WHERE条件中使用!=或<>操作符18.项目与行为面试题:请使用STAR法则描述一个你负责的“高并发项目”,包括项目背景、任务、行动和结果。19.项目与行为面试题:在团队项目中,如果遇到技术选型分歧,你会如何处理?请举例说明。20.项目与行为面试题:解释你在项目中解决的一个技术难点,包括问题分析、解决方案和效果评估。试卷答案1.编程题答案:```javaimportjava.util.HashMap;importjava.util.Map;classLRUCache{classNode{intkey,value;Nodeprev,next;Node(intkey,intvalue){this.key=key;this.value=value;}}privateMap<Integer,Node>cache;privateNodehead,tail;privateintcapacity;publicLRUCache(intcapacity){this.cache=newHashMap<>();this.capacity=capacity;head=newNode(-1,-1);tail=newNode(-1,-1);head.next=tail;tail.prev=head;}publicintget(intkey){if(!cache.containsKey(key))return-1;Nodenode=cache.get(key);moveToHead(node);returnnode.value;}publicvoidput(intkey,intvalue){if(cache.containsKey(key)){Nodenode=cache.get(key);node.value=value;moveToHead(node);}else{Nodenode=newNode(key,value);cache.put(key,node);addToHead(node);if(cache.size()>capacity){Nodelast=removeTail();cache.remove(last.key);}}}privatevoidmoveToHead(Nodenode){removeNode(node);addToHead(node);}privatevoidremoveNode(Nodenode){node.prev.next=node.next;node.next.prev=node.prev;}privatevoidaddToHead(Nodenode){node.prev=head;node.next=head.next;head.next.prev=node;head.next=node;}privateNoderemoveTail(){Nodelast=tail.prev;removeNode(last);returnlast;}}```解析思路:使用哈希表+双向链表实现LRU缓存。哈希表实现O(1)查找,双向链表维护访问顺序。get操作将访问节点移至头部;put操作更新节点或插入新节点,容量满时移除尾部节点。2.编程题答案:```javaclassSolution{publicListNodereverseList(ListNodehead){ListNodeprev=null;ListNodecurr=head;while(curr!=null){ListNodenext=curr.next;curr.next=prev;prev=curr;curr=next;}returnprev;}}```解析思路:迭代法反转链表。使用双指针prev和curr,每次将curr.next指向prev,然后prev和curr同时后移,最终prev指向新链表头。3.编程题答案:```javaclassSolution{publicint[]twoSum(int[]nums,inttarget){Map<Integer,Integer>map=newHashMap<>();for(inti=0;i<nums.length;i++){intcomplement=target-nums[i];if(map.containsKey(complement)){returnnewint[]{map.get(complement),i};}map.put(nums[i],i);}returnnewint[]{};}}```解析思路:哈希表存储元素值和索引。遍历数组时,计算当前元素的补数(target-nums[i]),若补数在哈希表中,则返回补数索引和当前索引;否则将当前元素存入哈希表。4.编程题答案:```javaimportjava.util.Random;importjava.util.concurrent.locks.Condition;importjava.util.concurrent.locks.ReentrantLock;classProducerConsumer{privatestaticfinalintCAPACITY=10;privatefinalint[]buffer=newint[CAPACITY];privateintcount=0;privatefinalReentrantLocklock=newReentrantLock();privatefinalConditionnotFull=lock.newCondition();privatefinalConditionnotEmpty=lock.newCondition();classProducerimplementsRunnable{@Overridepublicvoidrun(){Randomrandom=newRandom();while(true){lock.lock();try{while(count==CAPACITY){notFull.await();}intnum=random.nextInt(100);buffer[count++]=num;System.out.println("Produced:"+num);notEmpty.signal();}catch(InterruptedExceptione){Thread.currentThread().interrupt();}finally{lock.unlock();}}}}classConsumerimplementsRunnable{@Overridepublicvoidrun(){while(true){lock.lock();try{while(count==0){notEmpty.await();}intnum=buffer[--count];System.out.println("Consumed:"+num);notFull.signal();}catch(InterruptedExceptione){Thread.currentThread().interrupt();}finally{lock.unlock();}}}}publicstaticvoidmain(String[]args){ProducerConsumerpc=newProducerConsumer();newThread(pc.newProducer()).start();newThread(pc.newConsumer()).start();}}```解析思路:使用ReentrantLock和Condition实现生产者-消费者模型。生产者检查队列是否满,满时等待;消费者检查队列是否空,空时等待。生产后通知消费者,消费后通知生产者。5.系统设计题答案:架构设计:-短码生成:使用分布式ID生成器(如Snowflake)生成唯一ID,转62进制(a-z/A-Z/0-1)得到8位短码。-存储:Redis集群存储短码-长链接映射(Hash结构,TTL7天);MySQL持久化存储(短码、长链接、创建时间)。-高并发处理:Nginx负载均衡(轮询)+限流(令牌桶算法,单IP100次/秒);缓存优化(缓存穿透:空值缓存;缓存击穿:互斥锁重建;缓存雪崩:集群部署+随机TTL)。-容灾:Redis集群+哨兵模式;MySQL主从同步;监控(Prometheus+Grafana)自动扩容。解析思路:核心是高并发读写和短码唯一性。分布式ID保证短码唯一,Redis缓存提升性能,负载均衡和限流控制流量,容灾措施确保高可用。6.系统设计题答案:架构设计:-数据存储:订单分库分表(按用户ID哈希分16库,每库分128表);Redis缓存订单状态(Hash结构,TTL24小时)。-订单状态更新:状态机模式,通过消息队列(RocketMQ)异步更新库存和物流。-库存扣减:Redis预减库存(DECR)+MySQL异步同步(消息队列)。-订单查询:从Redis查询缓存,未命中则查MySQL分库分表;按时间范围查询走索引(create_time)。-技术选型:MySQL(订单存储)、Redis(缓存)、RocketMQ(消息队列)、Nginx(负载均衡)。-优化策略:分库分表解决数据量大问题;缓存设计减轻数据库压力;消息队列解耦核心流程。解析思路:电商订单系统核心是高并发写入和查询。分库分表解决数据量问题,缓存提升查询性能,消息队列处理异步任务,状态机管理订单流程。7.数据库题答案:```sqlSELECTMONTH(create_time)ASmonth,COUNT(*)ASuser_countFROMuserWHEREYEAR(create_time)=2023GROUPBYMONTH(create_time)ORDERBYmonth;```解析思路:使用YEAR和MONTH函数提取年月,WHERE筛选2023年数据,GROUPBY按月份分组,COUNT统计数量,ORDERBY按月份排序。8.数据库题答案:联合索引的最左前缀原则指查询条件必须从索引的最左侧列开始,且连续使用。违反示例:索引(a,b,c),查询条件仅用b或c(如WHEREb=1),索引失效。解析思路:联合索引(a,b,c)支持a、a+b、a+b+c查询,但不支持单独b或c查询。违反时数据库无法利用索引,需全表扫描。9.数据库题答案:优化点:1.SELECT仅查询必要字段(避免回表)。2.使用BETWEEN替代范围查询(语义相同,更简洁)。3.依赖联合索引(user_id,status,create_time)实现覆盖索引,无需回表。4.ORDERBYcreate_timeDESC利用索引顺序,避免额外排序。优化后SQL:```sqlSELECTid,user_id,status,create_timeFROMorder_detailWHEREuser_id=100ANDstatus=1ANDcreate_timeBETWEEN'2023-01-01'AND'2023-12-31'ORDERBYcreate_timeDESCLIMIT10;```解析思路:联合索引覆盖查询字段,避免回表;BETWEEN更高效;SELECT*改为指定字段减少数据传输;索引顺序支持排序,避免额外计算。10.操作系统题答案:进程上下文切换过程:1.触发条件:时间片用完、I/O请求、高优先级进程就绪。2.切换步骤:-用户态→内核态(通过中断/系统调用)。-保存当前进程上下文(寄存器、PC、内存管理信息等)。-加载目标进程上下文(从PCB读取)。-内核态→用户态(返回用户态)。多线程切换开销来源:1.线程私有数据保存/恢复(栈指针、寄存器)。2.CPU缓存失效(需重新加载数据)。3.锁竞争导致阻塞(获取锁/释放锁开销)。解析思路:进程切换涉及内核态切换和PCB保存,开销大;线程切换只需保存线程私有数据,但缓存失效和锁竞争仍带来开销。11.操作系统题答案:区别:|特性|进程|线程||--|--|--||资源分配|独立内存空间、文件描述符|共享进程资源||CPU调度开销|大(保存虚拟内存等)|小(仅保存寄存器等)||通信方式|管道、消息队列等|共享内存(需同步)||并发性|进程间并发|线程间并发|解析思路:进程是资源分配单位,线程是CPU调度单位;进程切换开销大,线程共享资源;进程通信复杂,线程通信简单但需同步。12.操作系统题答案:内存泄漏原因:程序未释放不再使用的内存(如忘记free/delete)。影响:长期运行导致内存耗尽,性能下降(频繁GC/换页)。检测工具:Valgrind(Linux)、MAT(Java)。解析思路:内存泄漏是未释放的内存堆积;影响系统可用性;工具通过分析内存分配和释放检测泄漏。13.计算机网络题答案:三次握手过程:1.客户端→服务器:SYN=1,seq=x(连接请求)。2.服务器→客户端:SYN=1,ACK=1,ack=x+1,seq=y(确认请求并发起新连接)。3.客户端→服务器:ACK=1,ack=y+1(确认连接)。不是两次握手原因:防止已失效连接请求导致服务器资源浪费(如失效SYN到达服务器,误建立连接)。解析思路:三次握手确保双方收发能力;防止失效连接占用服务器资源;两次握手无法确认客户端接收能力。14.计算机网络题答案:区别:|特性|HTTP|HTTPS||--|-|-||安全性|明文传输|加密传输(SSL/TLS)||端口|80|443||证书|无|需CA证书验证身份||性能|快|加密增加延迟|HTTPS安全保证:1.加密:对称加密(AES)传输数据,非对称加密(RSA)交换密钥。2.身份验证:CA证书验证服务器身份,防止中间人攻击。3.完整性:MAC(消息认证码)确保数据未被篡改。解析思路:HTTPS=HTTP+SSL/TLS;通过加密和证书保证安全;非对称密钥交换解决密钥分发问题。15.计算机网络题答案:拥塞控制机制:-慢开始:指数增长cwnd(从1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年下肢静脉性溃疡治疗试题(附答案)
- 斯巴鲁森林人车门隔音大能隔音石家庄无限汽车隔音
- 植物细胞组织培养园艺
- 2025-2026学年《锦瑟》的说课稿
- 土方碾压雨季施工方案
- 食材缺货应急处置方案
- 装备智能运维专业产教融合人才培养方案
- 雨污水检查井施工工艺技术方案
- 自动驾驶示范基地可行性研究报告
- 幼儿园谷雨农耕体验主题活动方案
- 中国传统滚灯介绍
- 雷锋精神发源地
- 项目四 直流电动机与三相交流电动机性能检测
- 安全检查分析scl课件
- 辽宁省东北育才高中2025 - 2026学年度上学期高一上学期10月考语文试卷
- 正大杯全国大学生市场调查与分析大赛(试题340道含答案)
- 农业机械化智能化发展现状下的农业人才培养模式研究报告
- CJ/T 454-2014城镇供水水量计量仪表的配备和管理通则
- 教学能力比赛教学设计与实施-以“电子产品制作与调试”课程为例
- 安全生产检查记录表(范本)
- 2025版中考冲刺地理填图手册 专题二 地球的运动
评论
0/150
提交评论