版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年互联网公司面试常见问题一、编程能力测试(共3题,每题10分)1.题目:实现一个函数,输入一个非负整数n,返回其对应的十六进制字符串,不使用内置的十六进制转换函数。示例:输入`255`,输出`"ff"`。2.题目:编写一个函数,判断一个字符串是否为有效的括号组合(只考虑`'{'`,`'}`,`'('`,`')'`,`'['`,`']'`)。示例:输入`"()[]{}"`,输出`True`;输入`"([)]"`,输出`False`。3.题目:给定一个包含重复元素的数组,返回所有不重复的全排列。示例:输入`[1,1,2]`,输出`[[1,1,2],[1,2,1],[2,1,1]]`。二、系统设计能力测试(共2题,每题15分)1.题目:设计一个短链接系统,要求支持以下功能:-输入一个长链接,返回一个短链接(如`/abc123`)。-通过短链接能够解析回原始长链接。说明:需考虑高并发、分布式场景下的性能和可用性。2.题目:设计一个高并发的微博点赞系统,要求:-支持用户对微博进行点赞/取消点赞操作。-实时显示微博的点赞数。说明:需考虑数据一致性和系统扩展性。三、算法与数据结构(共4题,每题12分)1.题目:给定一个排序数组,其中部分元素重复,返回数组中重复的元素。示例:输入`[1,2,2,3,4,4,5]`,输出`[2,4]`。2.题目:实现一个LRU(最近最少使用)缓存,支持`get`和`put`操作。示例:容量为3,操作序列`["put",1,1,"put",2,2,"get",1,"put",3,3,"get",2,"get",1]`,输出`[1,-1,1]`。3.题目:给定一个二叉树,判断其是否为对称二叉树。示例:输入`[1,2,2,3,4,4,3]`,输出`True`。4.题目:实现一个字符串的URL解析功能,解析出`protocol`、`hostname`、`port`、`path`等字段。示例:输入`":8080/path?query=1"`,输出`{"protocol":"https","hostname":"","port":"8080","path":"/path","query":"1"}`。四、数据库与分布式(共3题,每题13分)1.题目:解释MySQL中的事务隔离级别,并说明`脏读`、`不可重复读`、`幻读`的区别。2.题目:设计一个分布式锁,要求在Redis和Zookeeper中实现两种方案。3.题目:解释分布式事务的解决方案(如2PC、TCC、Saga),并说明各自的优缺点。五、行为面试问题(共4题,每题14分)1.题目:描述一次你遇到的复杂技术难题,你是如何解决的?2.题目:你如何与产品经理、运维团队协作?举例说明。3.题目:你认为测试工程师的核心价值是什么?4.题目:你最大的技术优势是什么?如何持续学习?答案解析一、编程能力测试1.答案:pythondefto_hex(n:int)->str:ifn==0:return"0"hex_chars="0123456789abcdef"hex_str=""whilen>0:hex_str=hex_chars[n%16]+hex_strn=n//16returnhex_str解析:-非负整数n通过不断除以16并取余数,将余数映射到十六进制字符。-处理边界情况(n=0)。-需要逆序拼接字符,因为低位先计算。2.答案:pythondefisValid(s:str)->bool:stack=[]mapping={')':'(','}':'{',']':'['}forcharins:ifcharinmapping:top_element=stack.pop()ifstackelse'#'ifmapping[char]!=top_element:returnFalseelse:stack.append(char)returnnotstack解析:-使用栈结构,左括号入栈,右括号匹配栈顶。-需处理嵌套和顺序错误的情况。3.答案:pythondefpermuteUnique(nums):result=[]nums.sort()used=[False]len(nums)defbacktrack(path):iflen(path)==len(nums):result.append(path.copy())returnforiinrange(len(nums)):ifused[i]:continueifi>0andnums[i]==nums[i-1]andnotused[i-1]:continueused[i]=Truepath.append(nums[i])backtrack(path)path.pop()used[i]=Falsebacktrack([])returnresult解析:-先排序去重,避免重复排列。-使用used数组记录状态,防止重复使用元素。-跳过连续相同且前一个未使用的元素,避免重复排列。二、系统设计能力测试1.答案:方案:-使用短链接生成算法(如`hash`或`随机数`)将长链接映射为短链接。-存储短链接与长链接的映射关系(如Redis)。-解析短链接时,通过映射关系返回长链接。高并发优化:-使用分布式缓存(RedisCluster)存储映射关系。-设置合理的TTL,避免永久存储无用数据。-异步写入日志,提高响应速度。2.答案:方案:-使用Redis的`INCR`命令实现原子性点赞。-使用RedisHash存储用户与微博的点赞状态。-实时更新点赞数,通过发布订阅机制通知客户端。扩展性:-微博数据分片存储,按时间或用户ID。-点赞操作异步化,通过消息队列(Kafka)处理。三、算法与数据结构1.答案:pythondeffindDuplicates(nums):result=[]fornuminnums:abs_num=abs(num)ifnums[abs_num-1]<0:result.append(abs_num)else:nums[abs_num-1]=-nums[abs_num-1]returnresult解析:-利用数组索引表示数字,通过正负号判断重复。-需处理边界情况(如数组大小不足)。2.答案:pythonclassLRUCache:def__init__(self,capacity:int):self.capacity=capacityself.cache={}self.order=[]defget(self,key:int)->int:ifkeynotinself.cache:return-1self.order.remove(key)self.order.append(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.order.remove(key)eliflen(self.cache)==self.capacity:oldest=self.order.pop(0)delself.cache[oldest]self.cache[key]=valueself.order.append(key)解析:-使用哈希表记录键值对,双向链表记录访问顺序。-`get`操作移动键到链表末尾,`put`操作移除最久未使用项。3.答案:pythondefisSymmetric(root):defisMirror(left,right):ifnotleftandnotright:returnTrueifnotleftornotright:returnFalsereturn(left.val==right.val)andisMirror(left.left,right.right)andisMirror(left.right,right.left)returnisMirror(root,root)解析:-递归比较左右子树,对称关系要求左子树的左孩子等于右子树的右孩子,反之亦然。4.答案:pythondefparse_url(url:str):fromurllib.parseimporturlparseparsed=urlparse(url)return{"protocol":parsed.scheme,"hostname":parsed.hostname,"port":parsed.port,"path":parsed.path,"query":parsed.query}解析:-使用`urllib.parse`模块解析URL,提取各字段。四、数据库与分布式1.答案:-隔离级别:-`ReadUncommitted`:允许脏读。-`ReadCommitted`:不允许脏读,但允许不可重复读。-`RepeatableRead`:不允许脏读和不可重复读,但允许幻读。-`Serializable`:完全隔离,避免所有问题。-区别:-脏读:事务A修改未提交的数据,事务B读取到。-不可重复读:事务A读取数据,事务B修改并提交,事务A再次读取到不同值。-幻读:事务A读取数据范围,事务B插入新数据,事务A再次读取到更多数据。2.答案:-Redis实现:pythonimportredislock=redis.Redis()defacquire_lock(key,timeout):whiletimeout>0:iflock.setnx(key,"locked"):returnTruetimeout-=1time.sleep(0.1)returnFalsedefrelease_lock(key):lock.delete(key)-Zookeeper实现:-创建临时有序节点,监听前一个节点。-获取到最小序号节点时锁定,否则删除节点。3.答案:-2PC:-分布式事务协议,分为准备阶段和提交阶段。-优点:强一致性。-缺点:同步阻塞,容错性差。-TCC:-基于补偿事务,每个操作都有`try`、`confirm`、`cancel`方法。-优点:灵活。-缺点:实现复杂。-Saga:-将事务拆分为一系列本地事务。-优点:异步执行。-缺点:可能存在部分失败。五、行为面试问题1.答案:-案例:-在某次项目中,数据库主从延迟导致数据不一致。-解决方案:1.监控主从延迟,提前预警。2.优化SQL语句,减少长事务。3.使用缓存减轻数据库压力。-关键点:-分析问题根源,制定方案。-持续优化,避免复发。2.答案:-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳师范大学《金融学概论》2025-2026学年期末试卷
- 通辽职业学院《工作研究与分析》2025-2026学年期末试卷
- 唐山海运职业学院《金融监管学》2025-2026学年期末试卷
- 上海对外经贸大学《旅游资源开发与管理》2025-2026学年期末试卷
- 沈阳航空航天大学《中医学》2025-2026学年期末试卷
- 沈阳药科大学《急诊与灾难学》2025-2026学年期末试卷
- 上海建设管理职业技术学院《泵与泵站》2025-2026学年期末试卷
- 休闲的活动策划方案(3篇)
- 商场手机活动策划方案(3篇)
- 婚庆十一活动策划方案(3篇)
- 2026季华实验室测试中心招聘5人(广东)笔试参考题库及答案解析
- 2026年吉林四平市高职单招英语试题含答案
- 210亩黄精林下套种可行性研究报告
- 中国慢性阻塞性肺疾病诊治指南(2025版)
- 律所反洗钱内部控制制度
- 20.1 勾股定理及其应用 课件 2025-2026学年 人教版八年级数学下册
- 2025年宿州职业技术学院单招职业技能考试试题及答案解析
- 2025年专升本管理学原理模拟试卷及答案
- 山东省济南市2025-2026年高三上第一次模拟考试历史+答案
- GB/T 10752-2005船用钢管对焊接头
- 半导体热电制冷器详细技术说明
评论
0/150
提交评论