版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年工程师岗位笔试面试题集含答案一、编程语言与数据结构(15题,共75分)(针对互联网、深圳地域,侧重Java和算法)1.(5分)编写Java代码,实现一个单链表反转功能。要求:不使用递归,时间复杂度O(n)。2.(10分)给定一个包含重复元素的数组,请找出所有不重复的三元组,使得三元组的和等于目标值。例如:输入`[1,2,2,3,4]`,目标值`7`,输出`[[1,2,4],[1,3,3]]`。3.(5分)解释Java中的`volatile`关键字的作用,并说明它与`synchronized`的区别。4.(10分)实现一个LRU(最近最少使用)缓存,容量为3。输入:`["LRU","put",1,1,"get",1,"put",2,2,"get",1,"put",3,3,"get",2,"get",3]`,输出:`[1,-1,1,-1,3]`。5.(10分)有一棵二叉搜索树,请编写代码将其转换为累加树(每个节点的值等于左子树和右子树值之和,并删除原左、右子树)。6.(5分)什么是时间复杂度O(logn)?举例说明其应用场景。7.(10分)编写Python代码,实现快速排序算法,并分析其平均时间复杂度。8.(5分)解释Java中的`StringBuilder`和`StringBuffer`的区别。9.(10分)给定一个字符串`s="abcabcbb"`,请返回其最长无重复字符的子串长度(答案:3,对应"abc")。10.(10分)实现一个二叉树的前序遍历(非递归),要求使用栈。11.(5分)解释Java中的`HashMap`的put过程。12.(10分)编写代码,合并两个有序链表,使其合并后依然有序。例如:链表1`[1,2,4]`,链表2`[1,3,4]`,输出`[1,1,2,3,4,4]`。13.(5分)什么是线程的`sleep`和`wait`?它们有什么区别?14.(10分)给定一个数组`nums`,返回`nums`中缺失的最小正整数。例如:`[3,4,-1,1]`,输出`2`。15.(10分)解释Java中的`抽象类`和`接口`的区别,并说明使用场景。答案与解析1.单链表反转(5分)javaclassListNode{intval;ListNodenext;ListNode(intx){val=x;}}publicListNodereverseList(ListNodehead){ListNodeprev=null;ListNodecurr=head;while(curr!=null){ListNodenextTemp=curr.next;curr.next=prev;prev=curr;curr=nextTemp;}returnprev;}解析:使用三个指针`prev`、`curr`和`nextTemp`,逐个反转节点指针。时间复杂度O(n),空间复杂度O(1)。2.三元组求和(10分)javaimportjava.util.;publicList<List<Integer>>threeSum(int[]nums,inttarget){List<List<Integer>>res=newArrayList<>();Arrays.sort(nums);for(inti=0;i<nums.length-2;i++){if(i>0&&nums[i]==nums[i-1])continue;//去重intleft=i+1,right=nums.length-1;while(left<right){intsum=nums[i]+nums[left]+nums[right];if(sum==target){res.add(Arrays.asList(nums[i],nums[left],nums[right]));while(left<right&&nums[left]==nums[left+1])left++;while(left<right&&nums[right]==nums[right-1])right--;left++;right--;}elseif(sum<target)left++;elseright--;}}returnres;}解析:先排序,再用双指针法。时间复杂度O(n²),空间复杂度O(1)。3.`volatile`与`synchronized`(5分)-`volatile`:确保变量可见性,但不保证原子性。适用于轻量级同步场景(如状态标记)。-`synchronized`:可重入、可中断、可等待/通知,保证原子性和可见性。适用于复杂同步场景。4.LRU缓存(10分)javaclassLRUCache{privateintcapacity;privateMap<Integer,Integer>cache;publicLRUCache(intcapacity){this.capacity=capacity;cache=newLinkedHashMap<>(capacity,0.75f,true){protectedbooleanremoveEldestEntry(Map.Entry<Integer,Integer>eldest){returnsize()>capacity;}};}publicintget(intkey){returncache.getOrDefault(key,-1);}publicvoidput(intkey,intvalue){cache.put(key,value);}}解析:使用`LinkedHashMap`实现LRU,通过`removeEldestEntry`控制容量。5.累加树(10分)javapublicTreeNodeconvertBST(TreeNoderoot){if(root==null)returnnull;intsum=helper(root);returnroot;}privateinthelper(TreeNodenode){if(node==null)return0;intright=helper(node.right);inttotal=node.val+right;node.val=total;intleft=helper(node.left);returntotal+left;}解析:后序遍历,将每个节点值替换为左子树和右子树之和。6.O(logn)时间复杂度(5分)-定义:每次操作将问题规模减半(如二分查找)。-应用:二分搜索、平衡树(AVL、红黑树)。7.快速排序(10分)pythondefquick_sort(arr):iflen(arr)<=1:returnarrpivot=arr[len(arr)//2]left=[xforxinarrifx<pivot]middle=[xforxinarrifx==pivot]right=[xforxinarrifx>pivot]returnquick_sort(left)+middle+quick_sort(right)解析:平均时间复杂度O(nlogn),最坏O(n²)。8.`StringBuilder`与`StringBuffer`(5分)-`StringBuilder`:非线程安全,效率更高。-`StringBuffer`:线程安全,效率较低(内部加锁)。9.最长无重复子串(10分)pythondeflength_of_longest_substring(s):max_len=0start=0char_set=set()forendinrange(len(s)):whiles[end]inchar_set:char_set.remove(s[start])start+=1char_set.add(s[end])max_len=max(max_len,end-start+1)returnmax_len解析:滑动窗口,时间复杂度O(n)。10.二叉树前序遍历(非递归)(10分)javapublicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>res=newArrayList<>();if(root==null)returnres;Stack<TreeNode>stack=newStack<>();stack.push(root);while(!stack.isEmpty()){TreeNodenode=stack.pop();res.add(node.val);if(node.right!=null)stack.push(node.right);if(node.left!=null)stack.push(node.left);}returnres;}解析:栈模拟递归,先访问右子树再左子树。11.`HashMap`的put过程(5分)-计算hash值,定位bucket。-若bucket为空,直接插入。-若key冲突,使用链表或红黑树解决。12.合并有序链表(10分)pythondefmergeTwoLists(l1,l2):dummy=ListNode(0)current=dummywhilel1andl2:ifl1.val<l2.val:current.next=l1l1=l1.nextelse:current.next=l2l2=l2.nextcurrent=current.nextcurrent.next=l1orl2returndummy.next解析:双指针法,时间复杂度O(n)。13.`sleep`与`wait`(5分)-`sleep`:线程休眠,不释放锁。-`wait`:线程等待,释放锁,需`notify/notifyAll`唤醒。14.缺失的最小正整数(10分)pythondeffirstMissingPositive(nums):n=len(nums)foriinrange(n):while1<=nums[i]<=nandnums[nums[i]-1]!=nums[i]:nums[nums[i]-1],nums[i]=nums[i],nums[nums[i]-1]foriinrange(n):ifnums[i]!=i+1:returni+1returnn+1解析:原地哈希,时间复杂度O(n)。15.`抽象类`与`接口`(10分)-抽象类:可含抽象方法(子类必须实现)和普通方法。-接口:仅含抽象方法(Java8后可含default方法)。-使用场景:抽象类用于共享行为,接口用于定义规范。二、系统设计(5题,共50分)(针对深圳金融行业,侧重分布式、高并发)16.(10分)设计一个高并发的短链接系统,要求支持每日百万级请求。17.(10分)解释CAP理论,并说明分布式数据库如何实现最终一致性。18.(10分)设计一个秒杀系统,要求支持每秒1000单,且无超卖。19.(10分)如何设计一个分布式任务调度系统(如阿里的Tair),支持任务去重和失败重试?20.(10分)解释JWT(JSONWebToken)的原理及其优缺点。答案与解析16.短链接系统(10分)-步骤:1.原始URL->转换为短ID(如Base62编码)。2.短ID->存入Redis(高并发场景)。3.请求短ID->查询Redis,若不存在则回源数据库。-关键技术:Redis集群、Base62编码、CDN加速。17.CAP理论(10分)-CAP理论:一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)。-最终一致性:通过消息队列(如Kafka)、分布式锁等实现。18.秒杀系统(10分)-步骤:1.用户请求->分布式锁(Redis或ZooKeeper)。2.库存扣减->确认订单,若超卖则回滚。3.阶梯式限流:熔断、降级。-关键技术:Redis、分布式锁、消息队列。19.分布式任务调度(10分)-去重:RedisSet存储任务ID。-重试:消息队列记录重试次数,定时检查。-关键技术:Redis、消息队列、定时任务。20.JWT原理(10分)-原理:JSON编码的令牌,含Header、Payload、Signature。-优点:无状态、跨域。-缺点:Payload不宜存敏感信息、易被篡改(需签名验证)。三、数据库与中间件(5题,共25分)(针对深圳电商行业,侧重MySQL、MQ)21.(5分)什么是MySQL的索引类型(如B-Tree、Hash)及其适用场景?22.(5分)解释MySQL中的事务隔离级别及其缺陷(如脏读)。23.(5分)什么是消息队列的“重复消费”问题?如何解决?24.(5分)解释Redis的RDB和AOF持久化方式。25.(5分)如何优化MySQL查询:`SELECTFROMtableWHEREidIN(1,2,3)`?答案与解析21.MySQL索引类型(5分)-B-Tree:通用索引,适用于范围查询(如`BETWEEN`)。-Hash:等值查询,不支持范围查询。22.事务隔离级别(5分)-级别:读未提交、读已提交、可重复读、串行化。-缺陷:脏读(低级别可能导致)。23.消息队列重复消费(5分)-原因:消息丢失或Broker重复推送。-解决:幂等性设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物信息学分析IBD癌变的关键调控基因
- 保险行业数据分析师的答案解析
- 物业管理师国家职业资格考试复习含答案
- 深度解析(2026)《GBT 19448.3-2004圆柱柄刀夹 第3部分装径向矩形车刀的B型刀夹》
- 深度解析(2026)《GBT 19375-2003利木赞种牛》
- 办公室文员工作考核标准及办法
- 瓣膜介入器械的麻醉配合策略
- 环保组织招聘环保项目活动策划与执行专员面试题及答案
- 网络安全专家面试题及攻防实战案例含答案
- 剪床项目可行性分析报告范文(总投资7000万元)
- 2025至2030中国高拍仪行业项目调研及市场前景预测评估报告
- 2025中国继续教育行业市场发展现状与投资策略报告
- (21)普通高中西班牙语课程标准日常修订版(2017年版2025年修订)
- 2025年4月自考习概部分试题及答案
- 华为培训体系介绍
- 益生元管理师高级考试试卷与答案
- 特种作业安全工作培训课件
- 住宅电梯更新项目可行性研究报告
- 广东省广州市天河区2023-2024学年七年级上学期期末道德与法治试题(含答案)
- 2024-2025学年塔里木职业技术学院单招《英语》考前冲刺练习试题附答案详解【培优B卷】
- 手榴弹使用课件
评论
0/150
提交评论