版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年IT行业技术面试题库及答案手册一、编程语言基础(3题,每题20分)1.题目(JavaScript):编写一个JavaScript函数,接收一个字符串参数,返回该字符串中所有单词的长度,并以数组形式返回。例如,输入`"Helloworld"`,输出`[5,5]`。要求使用箭头函数实现,并处理空字符串和特殊字符的情况。答案与解析:javascriptconstwordLengths=(str)=>{if(!str.trim())return[];returnstr.split(/\s+/).map(word=>word.replace(/[^a-zA-Z0-9]/g,'').length);};//示例:console.log(wordLengths("Helloworld"));//[5,5]console.log(wordLengths("Hello!World?"));//[5,5]console.log(wordLengths(""));//[]解析:-使用`split(/\s+/)`按空白字符分割字符串,处理多个空格的情况。-`map`遍历每个单词,`replace(/[^a-zA-Z0-5]/g,'')`去除非字母数字字符,确保长度计算准确。-空字符串或空白输入返回空数组。2.题目(Python):实现一个Python函数,接收一个列表,返回列表中所有偶数的平方,并去除重复值。例如,输入`[1,2,3,4,4,5]`,输出`[4,16]`。答案与解析:pythondefeven_squares(lst):returnlist(set(x2forxinlstifx%2==0))示例:print(even_squares([1,2,3,4,4,5]))#[4,16]解析:-列表推导式`x2forxinlstifx%2==0`筛选偶数并计算平方。-`set`去重,最后转回列表输出。3.题目(Java):编写Java代码,实现一个方法,接收一个整数数组,返回一个新数组,其中包含原数组中的所有正数,并按升序排列。例如,输入`{-3,1,4,-1,5}`,输出`[1,4,5]`。答案与解析:javaimportjava.util.Arrays;importjava.util.stream.IntStream;publicclassPositiveSort{publicstaticint[]positiveAsc(int[]arr){returnArrays.stream(arr).filter(x->x>0).sorted().toArray();}publicstaticvoidmain(String[]args){System.out.println(Arrays.toString(positiveAsc(newint[]{-3,1,4,-1,5})));//[1,4,5]}}解析:-使用`Arrays.stream(arr)`将数组转为流。-`filter(x->x>0)`筛选正数。-`sorted()`排序,最后转为数组输出。二、数据结构与算法(4题,每题25分)1.题目(链表):给定一个单链表,实现一个函数,将链表反转并返回新头节点。例如,输入`1->2->3->null`,输出`3->2->1->null`。答案与解析:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefreverseList(head):prev=Nonecurrent=headwhilecurrent:next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturnprev示例:head=ListNode(1,ListNode(2,ListNode(3)))reversed_head=reverseList(head)print([node.valfornodein[reversed_head,reversed_head.next,reversed_head.next.next]])#[3,2,1]解析:-初始化`prev=None`,`current=head`。-遍历链表,每次将`current.next`指向前一个节点。-更新`prev`和`current`指针。2.题目(二叉树):编写一个函数,判断二叉树是否是平衡二叉树(左右子树高度差不超过1)。例如,输入`[3,9,20,null,null,15,7]`(对应二叉树),输出`True`。答案与解析: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]示例:root=TreeNode(3,TreeNode(9),TreeNode(20,TreeNode(15),TreeNode(7)))print(isBalanced(root))#True解析:-递归计算左右子树高度,同时判断平衡性。-若高度差超过1或任一子树不平衡,返回`False`。3.题目(哈希表):实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。例如,容量为2:-`put(1,1)`→缓存`{1=1}`-`put(2,2)`→缓存`{1=1,2=2}`-`get(1)`→返回`1`(访问1,移至头部)-`put(3,3)`→缓存`{2=2,3=3}`(删除1)答案与解析: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:self.cache.pop(self.order.pop(0))self.cache[key]=valueself.order.append(key)示例:lru=LRUCache(2)lru.put(1,1)lru.put(2,2)print(lru.get(1))#1lru.put(3,3)print(lru.cache)#{2:2,3:3}解析:-`order`列表记录访问顺序。-`get`时移至尾部,`put`时若容量满则删除头部。4.题目(动态规划):给定一个数组,返回其中最多连续子数组的和。例如,输入`[-2,1,-3,4,-1,2,1,-5,4]`,输出`6`(子数组`[4,-1,2,1]`)。答案与解析:pythondefmaxSubArray(nums):ifnotnums:return0max_sum=current_sum=nums[0]fornuminnums[1:]:current_sum=max(num,current_sum+num)max_sum=max(max_sum,current_sum)returnmax_sum示例:print(maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))#6解析:-初始化`max_sum`和`current_sum`为第一个元素。-遍历数组,`current_sum`选择当前数或累加前值,`max_sum`记录最大值。三、系统设计(2题,每题30分)1.题目(短链接系统):设计一个短链接系统,要求:-输入长链接,返回固定长度的短链接(如6位字母数字)。-支持通过短链接查询原始长链接。-压缩率不低于90%(如`/abc123`→`/xyz`)。答案与解析:-数据结构:-使用哈希表`long2short`存储长链接到短链接的映射。-使用自增ID或随机生成短码(如62进制`a-zA-Z0-9`)。-算法:pythonimportstringimportrandomALPHABET=string.ascii_letters+string.digitsID2CODE={i:''.join(random.choices(ALPHABET,k=6))foriinrange(10000)}defencode(long_url):iflong_urlinID2CODE.values():returnID2CODE[long_url]foriinrange(10000):ifinotinID2CODE:ID2CODE[i]=''.join(random.choices(ALPHABET,k=6))returnID2CODE[i]defdecode(short_code):returnID2CODE.get(short_code,"Invalid")-解析:-使用字典映射ID到短码,避免冲突。-压缩率通过短码长度(6位)实现。2.题目(秒杀系统架构):设计一个秒杀系统,要求:-支持高并发(每秒10万请求)。-防止超卖和恶意刷单。-关键操作(如扣库存)需原子性。答案与解析:-架构:-前端:使用CDN缓存静态资源,限制IP请求频率(如Redis限流)。-后端:-使用消息队列(如Kafka)削峰填谷。-库存操作使用数据库事务+乐观锁或分布式锁(如RedisLock)。-数据库:-库存表加`version`字段实现乐观锁。-关键SQL加`FORUPDATE`锁定行。-缓存:-使用Redis缓存库存,先减库存再回写数据库。-伪代码:pythondefpurchase(user_id,goods_id):lock=redis.lock(f"goods_{goods_id}",timeout=5)lock.acquire()try:stock=redis.get(f"stock_{goods_id}")ifstock>0:redis.decr(f"stock_{goods_id}")redis.set(f"order_{user_id}",goods_id)return"Success"else:return"SoldOut"finally:lock.release()-解析:-锁机制防止并发扣库存。-消息队列解决请求风暴。四、数据库与中间件(3题,每题25分)1.题目(MySQL索引优化):某电商表`orders`(`id`,`user_id`,`order_time`,`status`),查询`status='paid'`且`order_time`在近一周内的订单,如何优化查询性能?答案与解析:-索引:sqlCREATEINDEXidx_status_timeONorders(status,order_time);-解析:-复合索引`status`在前,`order_time`在后,覆盖查询条件。-避免全表扫描,提升效率。2.题目(Redis缓存策略):设计一个新闻推荐系统,要求:-使用Redis缓存热点新闻(如最近浏览过的新闻)。-缓存过期时间设置为5分钟,过期后通过算法重新计算热点。-高并发下如何保证缓存一致性?答案与解析:-缓存策略:redisSETEXnews_{user_id}300hot_news_list-一致性:-使用发布/订阅模式(如RedisPub/Sub),热点更新时通知所有客户端清理缓存。-异步更新缓存,避免阻塞主线程。-解析:-缓存过期自动失效,通过消息队列同步更新。3.题目(Kafka消息队列):某系统使用Kafka处理订单数据,如何保证消息的顺序性和可靠性?答案与解析:-配置:propertiesenable.idempotence=truemin.insync.replicas=3-解析:-`enable.idempotence=true`防止重复消息。-`min.insync.replicas`确保消息写入多数分区。五、网络与安全(3题,每题25分)1.题目(HTTPS原理):简述HTTPS握手过程,并说明如何防止中间人攻击。答案与解析:-握手过程:1.客户端发送`ClientHello`(支持加密算法)。2.服务器响应`ServerHello`(选择算法),发送`cert`(证书)。3.客户端验证证书,生成预主密钥,用公钥加密后发送给服务器。4.服务器解密,双方生成会话密钥。-防中间人:-客户端验证证书颁发机构(CA),确保`cert`链可信。-使用`ciphersuite`防止downgrade攻击。2.题目(负载均衡策略):设计一个高可用API网关,支持动态扩缩容,如何实现负载均衡?答案与解析:-策略:-使用Nginx+Keepalived实现高可用。-负载均衡算法:-`least_conn`(最少连接)。-`ip_hash`(固定IP)。-动态扩容:-使用Kubernetes自动扩缩Pod,根据请求量调整副本数。-解析:-负载均衡避免单点过载,动态扩容应对流量波动。3.题目(SQL注入防御):如何防止SQL注入攻击?举例说明。答案与解析:-方法:-使用参数化查询(如`preparedStatement`)。-输入验证(如正则校验)。-最小权限原则(数据库账
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 照相机及器材制造工诚信品质模拟考核试卷含答案
- 残疾人职业能力评估师操作管理能力考核试卷含答案
- 机动车检测工班组建设评优考核试卷含答案
- 三轮四轮规范管理制度
- 酒店员工劳动合同管理与签订制度
- 超市员工培训及考核标准制度
- 柔性产品知识培训
- 2024-2025学年陕西省榆林市靖边县高一下学期第二次月考历史试题(解析版)
- 2024-2025学年江苏省盐城市七校联盟高二下学期期中联考历史试题(解析版)
- 松下机器人培训
- 2026年山东省威海市单招职业倾向性测试题库附答案解析
- 2026新疆伊犁州新源县总工会面向社会招聘工会社会工作者3人考试备考试题及答案解析
- 积极思想培训
- 电杆基础施工专项方案
- 2026春译林8下单词表【Unit1-8】(可编辑版)
- 2026年《必背60题》抖音本地生活BD经理高频面试题包含详细解答
- 骆驼祥子剧本杀课件
- 电影短片拍摄实践课件
- 电商平台对用户交易纠纷处理的机制或方案(2025完整版)
- 2025首都文化科技集团有限公司招聘9人考试笔试备考题库及答案解析
- 《经典常谈》导读课件教学
评论
0/150
提交评论