版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网大厂面试题库及答案一、编程基础(共5题,每题10分,总分50分)题目1(Java基础)请写出Java中如何实现一个线程安全的单例模式,并解释其原理。答案:javapublicclassSingleton{privatestaticvolatileSingletoninstance;privateSingleton(){//私有构造函数}publicstaticSingletongetInstance(){if(instance==null){synchronized(Singleton.class){if(instance==null){instance=newSingleton();}}}returninstance;}}解析:1.使用双重检查锁定模式(Double-CheckedLocking)2.`volatile`关键字确保内存可见性,防止指令重排3.首次检查提高效率,第二次检查确保唯一性4.线程安全,延迟加载题目2(JavaScript闭包)解释JavaScript中的闭包是什么,并给出一个实际应用场景。答案:javascriptfunctioncreateCounter(){letcount=0;return{increment:function(){count++;returncount;},decrement:function(){count--;returncount;},getCount:function(){returncount;}};}constcounter=createCounter();console.log(counter.increment());//1console.log(counter.increment());//2console.log(counter.decrement());//1解析:1.闭包是函数及其词法环境的组合2.内部函数可以访问外部函数的变量3.即使外部函数已执行完毕,变量仍可被访问4.应用场景:模块化开发、数据隐藏、创建私有变量题目3(数据结构)实现一个LRU(最近最少使用)缓存,要求时间复杂度为O(1)。答案:pythonclassNode:def__init__(self,key,value):self.key=keyself.value=valueself.prev=Noneself.next=NoneclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.head=Node(0,0)self.tail=Node(0,0)self.head.next=self.tailself.tail.prev=self.headdefget(self,key:int)->int:ifkeyinself.cache:node=self.cache[key]self._move_to_front(node)returnnode.valuereturn-1defput(self,key:int,value:int)->None:ifkeyinself.cache:node=self.cache[key]node.value=valueself._move_to_front(node)else:iflen(self.cache)==self.capacity:self._remove_least_recent()new_node=Node(key,value)self.cache[key]=new_nodeself._add_to_front(new_node)def_move_to_front(self,node):self._remove_node(node)self._add_to_front(node)def_add_to_front(self,node):node.prev=self.headnode.next=self.head.nextself.head.next.prev=nodeself.head.next=nodedef_remove_node(self,node):prev_node=node.prevnext_node=node.nextprev_node.next=next_nodenext_node.prev=prev_nodedef_remove_least_recent(self):tail_prev=self.tail.prevself._remove_node(tail_prev)delself.cache[tail_prev.key]解析:1.使用双向链表+哈希表实现2.哈希表存储键值对,快速查找3.双向链表维护访问顺序4.get操作将节点移到头部,put操作删除最久未使用节点题目4(算法复杂度)给定一个无重复元素的数组,请找出所有相加之和为特定数目标和的不重复子集。可以按任意顺序返回答案。答案:pythondefsubsetSum(nums,target):result=[]subset=[]defbacktrack(index,current_sum):ifcurrent_sum==target:result.append(subset.copy())returnifcurrent_sum>targetorindex>=len(nums):return不选择当前数字backtrack(index+1,current_sum)选择当前数字subset.append(nums[index])backtrack(index+1,current_sum+nums[index])subset.pop()backtrack(0,0)returnresult解析:1.回溯算法解决组合问题2.状态定义:当前索引和当前和3.剪枝条件:和超过目标或索引越界4.递归分支:选择或不选择当前元素5.时间复杂度:O(2^n)题目5(系统设计)设计一个简单的消息队列系统,说明其主要组件和消息传递流程。答案:1.主要组件:-生产者(Producer):创建并发送消息-消息代理(Broker):存储和转发消息-消费者(Consumer):接收并处理消息-消息队列:存储待处理消息-订阅者(Subscriber):订阅特定主题2.消息传递流程:-生产者创建消息并指定主题-消息代理接收消
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商洽签订长期供货协议4篇范本
- 鼻息肉护理中的鼻腔喷雾剂替代疗法
- 2026年网易云课堂考试预测资料
- 2026年项目管理专业人士考试题库
- 2026年中学生安全知识讲座
- 2026年创新创业财务知识培训
- 2026年碳汇项目核证师考试仿真题集及解析
- 腰痛的中医护理与运动疗法
- 新能源储能系统安全运行标准操作手册
- 2026年博物馆知识产权保护启动方案
- 2026年广西物流职业技术学院教师招聘笔试备考试题及答案解析
- 2026年托幼机构卫生保健人员培训试卷及答案
- 精神科患者跌倒防范与护理指南
- 上海市徐汇区南洋模范中学2026届生物高一下期末联考模拟试题含解析
- 2026年工程地质勘察的领域前沿研究
- 苏教版五年级数学上册:小数加减法探究与实践
- 通风管道施工应急方案
- 水利安全生产课件
- 胃镜检查前的药物使用指导
- 2026年威海职业学院辅导员招聘备考题库附答案
- 大型汽车衡工程施工组织设计方案
评论
0/150
提交评论