2026年技术研发工程师招聘笔试题及解答_第1页
2026年技术研发工程师招聘笔试题及解答_第2页
2026年技术研发工程师招聘笔试题及解答_第3页
2026年技术研发工程师招聘笔试题及解答_第4页
2026年技术研发工程师招聘笔试题及解答_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2026年技术研发工程师招聘笔试题及解答一、单项选择题(共10题,每题3分,满分30分)1.在64位Linux系统下,运行以下C++代码,输出结果是()```cppinclude<iostream>usingnamespacestd;classA{inta;charb;staticintc;};intmain(){cout<<sizeof(A)<<endl;return0;}```A.8B.12C.16D.42.用户首次访问某网站静态资源时,服务器返回的响应头包含`Cache-Control:max-age=86400`,`ETag:"abc123"`,用户12小时后刷新页面再次请求该资源,以下说法正确的是()A.会发送请求到服务器,返回200OKB.不会发送请求,直接读取本地缓存,状态码为200OKC.会发送请求到服务器,返回304NotModifiedD.会发送请求到服务器,返回400BadRequest3.对长度为n的有序数组进行二分查找,平均时间复杂度和最坏时间复杂度分别是()A.OB.OC.OD.O4.根据SQL标准定义,以下哪个事务隔离级别可以避免不可重复读,但不能避免幻读()A.读未提交B.读已提交C.可重复读D.串行化5.以下关于TCP四次挥手过程中TIME_WAIT状态的描述,正确的是()A.只有主动关闭方会进入TIME_WAIT状态,持续时长为2倍MSLB.只有被动关闭方会进入TIME_WAIT状态,持续时长为1倍MSLC.TIME_WAIT的核心作用之一是等待老旧报文超时退出,避免干扰后续同四元组的新连接D.A和C都正确6.以下JavaScript代码执行后,控制台输出的结果依次是()```javascriptconsole.log(a);vara=1;letb=2;functionfoo(){console.log(a);vara=3;console.log(b);}foo();```A.undefined,undefined,2B.1,3,2C.undefined,1,2D.报错,3,undefined7.一棵完全二叉树共有1001个节点,其中叶子节点的个数是()A.250B.500C.501D.5028.以下关于容器化技术Docker的描述,错误的是()A.Docker容器共享宿主操作系统内核B.Docker镜像采用分层存储,多个镜像可以共享相同的底层层C.Docker容器的隔离性通过LinuxNamespace和Cgroups实现D.Docker镜像的体积一定比虚拟机系统镜像大9.关于哈希表,以下说法正确的是()A.开放寻址法解决哈希冲突不需要额外存储链表,但是装载因子不能太大B.链地址法解决哈希冲突,装载因子一定小于1C.哈希表的查找时间复杂度一定是OD.重哈希不能用来解决哈希冲突10.在Git中,想要将本地当前分支的修改提交到远程仓库的指定分支,以下命令格式正确的是()A.`gitpush<远程名><本地分支>:<远程分支>`B.`gitpull<远程名><本地分支>:<远程分支>`C.`gitadd<远程名><本地分支>:<远程分支>`D.`gitcommit<远程名><本地分支>:<远程分支>`二、多项选择题(共5题,每题4分,满分20分,少选得2分,错选不得分)1.以下关于线程安全的描述,正确的有()A.Java中的ArrayList是线程不安全的,Vector是线程安全的B.C++STL中的std::vector在多线程环境下,多个只读操作是线程安全的C.读写锁允许多个读线程同时获取锁,能够提升并发读性能D.无锁编程使用CAS操作,完全不会出现ABA问题2.以下属于TCP拥塞控制算法环节的有()A.慢启动B.快重传C.滑动窗口D.拥塞避免3.以下设计模式中,属于创建型设计模式的有()A.工厂方法模式B.抽象工厂模式C.单例模式D.适配器模式4.关于分布式系统CAP定理,以下说法正确的有()A.CAP分别指一致性、可用性、分区容错性B.分布式系统在网络分区不可避免的情况下,最多只能同时满足CAP中的两个,不能三者同时满足C.CP架构就是放弃可用性,保证一致性和分区容错性,典型案例是ZookeeperD.AP架构就是放弃强一致性,保证可用性和分区容错性,允许最终一致性,典型案例是Eureka5.以下场景会造成内存泄漏的有()A.C++中new出来的对象,使用完后忘记deleteB.Java中,ArrayList集合存储对象后,调用clear()方法清空集合C.长生命周期的对象持有短生命周期对象的引用,使用完短生命周期对象后没有断开引用D.线程池中用完的线程没有正常关闭,线程一直持有对象引用三、算法编程题(共2题,每题15分,满分30分)1.给定一个无序整数数组`nums`和目标值`target`,找到数组中三个数之和等于`target`的所有不重复三元组,要求不输出重复的三元组(即不存在`[a,b,c]`和`[b,a,c]`这种重复组合)。输入示例:`nums=[-1,0,1,2,-1,-4],target=0`,输出示例:`[[-1,-1,2],[-1,0,1]]`要求:写出解题思路、可运行代码(C++/Java/Python均可)、分析时间空间复杂度。2.给定一个二叉树的根节点`root`,求该二叉树的直径,二叉树的直径定义为:树中任意两个节点之间路径长度的最大值,路径长度指两个节点之间的边数。输入示例(如下结构的二叉树):```1/\23/\45```输出示例:`3`(路径长度为4-2-1-3共3条边)要求:写出解题思路、可运行代码、分析时间空间复杂度。四、系统设计题(共1题,满分20分)请设计一个面向C端用户的短链接生成服务,需求如下:1.支持将任意长度的原始长链接转换为6位以内的短链接,短链接可用字符包括大小写字母、阿拉伯数字,共62个字符;2.用户访问短链接时,能够返回301重定向到原始长链接;3.支持高并发访问,读QPS要求达到10万级,数据需要持久化存储不丢失。请回答以下问题:1.短链接生成的核心算法思路是什么?如何保证生成的短链接不重复?2.整体架构分为哪几个核心模块,每个模块的作用是什么?3.如何应对10万级QPS的高并发读写?4.如何处理短链接的过期和垃圾回收?参考答案与解析一、单项选择题答案与解析1.答案:A解析:64位Linux下,类对象的大小计算遵循内存对齐规则,static修饰的成员变量存储在静态存储区,不属于对象本身,不占用类对象的大小。对象本身的成员是`inta(4字节)+charb(1字节)=5字节`,按照64位系统默认8字节对齐规则,最终类A的大小为8字节,因此选A。2.答案:B解析:HTTP缓存规则中,`Cache-Control:max-age=xxx`表示资源在本地缓存的有效期,单位为秒,有效期内浏览器不会向服务器发送请求,直接从本地缓存读取资源,状态码为200OK。本题中`max-age=86400`即1天,12小时仍在有效期内,因此直接读取本地缓存不发请求,选B。超过有效期才会向服务器发送验证请求,返回304NotModified。3.答案:B解析:二分查找每次将搜索区间缩小一半,无论平均情况还是最坏情况,都只需要O(lo4.答案:C解析:根据SQL标准定义,四个事务隔离级别的能力如下:①读未提交:仅避免脏写,无法避免脏读、不可重复读、幻读;②读已提交:避免脏写、脏读,无法避免不可重复读、幻读;③可重复读:避免脏写、脏读、不可重复读,无法避免幻读;④串行化:避免所有并发问题。题目要求符合“可避免不可重复读,不能避免幻读”,因此选C。注:MySQLInnoDB的可重复读通过MVCC和间隙锁实现了幻读避免,本题考察标准SQL定义,因此选C。5.答案:D解析:TCP四次挥手中,主动发起关闭的一方发送最后一个ACK后进入TIME_WAIT,持续时长为2倍MSL(报文最大生存时间)。TIME_WAIT的两个核心作用:①保证被动关闭方收到最后的ACK,如果ACK丢失,被动方会重发FIN,主动方可以在2MSL内重发ACK;②等待当前连接的所有老旧报文超时消失,避免后续同四元组(源IP、源端口、目的IP、目的端口)的新连接收到旧报文干扰。因此A和C描述都正确,选D。6.答案:A解析:JavaScript的变量提升规则为:var声明的变量会提升到当前作用域顶部,初始值为undefined;let声明的变量不会提升,存在暂时性死区,作用域遵循词法作用域。本题中,全局vara提升,第一行输出undefined;foo函数内部vara提升到函数作用域顶部,因此第一个输出也是undefined;b是全局let声明,函数内部可以访问,输出2。最终结果为undefined、undefined、2,选A。7.答案:C解析:二叉树性质:任意二叉树中,叶子节点数=度为2的节点数+1;完全二叉树中度为1的节点数只能为0或1。总节点数n=++=1001,代入=+1得8.答案:D解析:Docker容器共享宿主内核,镜像分层存储,隔离性依赖Namespace和Cgroups,描述均正确。Docker镜像通常只有几百MB,而虚拟机系统镜像一般为几GB到几十GB,Docker镜像体积远小于虚拟机镜像,因此D描述错误,选D。9.答案:A解析:开放寻址法所有元素都存储在哈希数组中,不需要额外链表,要求装载因子必须低于1,且装载因子过大会导致查找效率急剧下降,A正确;链地址法将冲突元素链接到对应哈希槽后,装载因子可以大于1,B错误;哈希表发生大量冲突时,查找时间复杂度会退化为O(n)10.答案:A解析:Git推送到远程指定分支的标准命令格式为`gitpush<远程名><本地分支>:<远程分支>`,pull是拉取代码,add是添加到暂存区,commit是提交到本地仓库,因此选A。二、多项选择题答案与解析1.答案:ABC解析:Java中ArrayList无同步,线程不安全,Vector所有方法加synchronized,线程安全,A正确;C++STL容器约定,多个只读访问不修改容器是线程安全的,B正确;读写锁设计允许多读并发,写互斥,适合读多写少场景提升并发性能,C正确;CAS操作存在ABA问题,需要通过版本号等机制解决,D错误,选ABC。2.答案:ABD解析:TCP拥塞控制包含慢启动、拥塞避免、快重传、快恢复四个核心环节,滑动窗口是TCP流量控制机制,用来控制发送方发送速率,不属于拥塞控制,因此选ABD。3.答案:ABC解析:设计模式分为创建型、结构型、行为型三类,创建型包含工厂方法、抽象工厂、单例、建造者、原型,适配器属于结构型设计模式,因此选ABC。4.答案:ABCD解析:CAP定理中C对应一致性、A对应可用性、P对应分区容错性,A正确;分布式系统网络分区不可避免,P必须满足,只能在C和A之间取舍,最多同时满足两个,B正确;Zookeeper选择CP架构,网络分区时拒绝服务保证一致性,C正确;Eureka选择AP架构,允许网络分区时正常提供服务,最终达到数据一致,放弃强一致性保证可用性,D正确,全选。5.答案:ACD解析:内存泄漏指使用完的内存没有释放,无法被程序回收再利用。C++中new后不delete会直接造成内存泄漏,A正确;Java中ArrayList的clear方法会清空所有元素引用,元素可以被GC回收,不会造成泄漏,B错误;长对象持有短对象引用,短对象用完后无法被GC回收,属于常见的内存泄漏场景,C正确;未关闭的线程长期持有对象引用,对象无法回收,会造成内存泄漏,D正确,选ACD。三、算法编程题答案与解析第1题解题思路:先对数组排序,固定第一个数后用双指针查找另外两个数,通过排序实现去重,避免重复三元组。步骤:①对原数组从小到大排序;②遍历数组固定第一个数,如果当前数和前一个数相同,直接跳过去重;③左指针指向i+1,右指针指向数组末尾,计算三数之和,和等于target则加入结果集,然后跳过左右指针相同元素去重,移动指针;和小于target移动左指针增大和,和大于target移动右指针减小和,直到左右指针相遇。Python代码实现:```pythondefthreeSum(nums,target):nums.sort()n=len(nums)res=[]foriinrange(n):ifi>0andnums[i]==nums[i-1]:continuel=i+1r=n1whilel<r:s=nums[i]+nums[l]+nums[r]ifs==target:res.append([nums[i],nums[l],nums[r]])whilel<randnums[l]==nums[l+1]:l+=1whilel<randnums[r]==nums[r-1]:r-=1l+=1r-=1elifs<target:l+=1else:r-=1returnres```复杂度分析:排序时间复杂度O(nlogn),外层遍历O第2题解题思路:二叉树的直径本质是某个节点的左子树最大深度加右子树最大深度,路径一定经过该节点,因此通过深度优先搜索遍历所有节点,计算每个节点的直径,维护最大值即可。步骤:①定义变量维护最大直径;②DFS函数输入节点,返回该节点为根的子树最大深度;③递归计算左右子树深度,当前节点直径为左右深度之和,更新最大直径;④返回当前节点最大深度`max(left,right)+1`,最终返回最大直径。Python代码实现:```pythonclassTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=rightclassSolution:defdiameterOfBinaryTree(self,root:TreeNode)->int:self.max_diameter=0defdfs(node):ifnotnode:return0left=dfs(node.left)right=dfs(node.right)self.max_diameter=max(self.max_diameter,left+right)returnmax(left,right)+1dfs(root)returnself.max_diameter```复杂度分析:每个节点仅访问一次,时间复杂度O(n)(n为节点数),空间复杂度O四、系统设计题答案与解析1.短链接生成与不重复保证生产环境主流方案是自增ID转62进制:给每个长链接分配全局唯一的自增ID,将自增ID转换为62进制(对应62个可用字符),得到的62进制字符串就是短链接后缀。因为自增ID本身全局唯一,因此转换后的短链接天然唯一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论