版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026中国华录集团招聘面试技术岗题库一、编程与算法题(共5题,每题10分,总分50分)1.题目:实现一个函数,输入一个整数数组,返回数组中第三大的数。如果数组中元素不足三个,则返回最大的数。例如,输入`[3,2,1,5,6,4]`,输出`5`;输入`[1,2]`,输出`2`。答案:pythondefthird_largest(nums):unique_nums=list(set(nums))iflen(unique_nums)<3:returnmax(unique_nums)ifunique_numselseNoneunique_nums.sort(reverse=True)returnunique_nums[2]解析:首先通过`set`去重,避免重复元素影响结果。然后根据去重后的长度判断是否满足条件。如果不足三个元素,直接返回最大值;否则排序后返回第三大的数。2.题目:给定一个字符串,判断它是否可以通过翻转其中一个子串得到另一个字符串。例如,输入`"abca"`和`"caab"`,返回`True`,因为`"abca"`可以通过翻转`"ab"`得到`"caab"`。答案:pythondefcan_rotate(s1,s2):iflen(s1)!=len(s2):returnFalses=s1+s1returns2ins解析:通过将`s1`与自身拼接,可以覆盖所有可能的子串翻转情况。如果`s2`是`s1`的翻转,那么`s2`必然存在于`s1+s1`中。3.题目:实现一个Trie(前缀树)数据结构,支持插入和查询操作。例如,插入`["apple","app"]`后,查询`prefix="ap"`应返回`["apple","app"]`。答案:pythonclassTrieNode:def__init__(self):self.children={}self.is_end=FalseclassTrie:def__init__(self):self.root=TrieNode()definsert(self,word):node=self.rootforcharinword:ifcharnotinnode.children:node.children[char]=TrieNode()node=node.children[char]node.is_end=Truedefsearch(self,word):node=self.rootres=[]forcharinword:ifcharnotinnode.children:returnresnode=node.children[char]self._collect(node,word,res)returnresdef_collect(self,node,prefix,res):ifnode.is_end:res.append(prefix)forchar,next_nodeinnode.children.items():self._collect(next_node,prefix+char,res)解析:Trie树通过节点和子节点的关系存储前缀信息。插入时逐字符创建节点,查询时逐字符匹配,匹配成功后递归收集所有以该前缀开头的单词。4.题目:设计一个LRU(最近最少使用)缓存,支持`get`和`put`操作。例如,容量为2的缓存,`put(1,1)`后`put(2,2)`,`get(1)`返回1,`put(3,3)`会淘汰键2,`get(2)`返回-1。答案:pythonfromcollectionsimportOrderedDictclassLRUCache:def__init__(self,capacity:int):self.cache=OrderedDict()self.capacity=capacitydefget(self,key:int)->int:ifkeynotinself.cache:return-1self.cache.move_to_end(key)returnself.cache[key]defput(self,key:int,value:int)->None:ifkeyinself.cache:self.cache.move_to_end(key)self.cache[key]=valueiflen(self.cache)>self.capacity:self.cache.popitem(last=False)解析:使用`OrderedDict`维护键值对顺序,`get`时将键移到末尾表示最近使用,`put`时如果超出容量则删除最旧的键。5.题目:实现一个函数,输入一个正整数`n`,返回`n`的二进制表示中1的个数。例如,输入`11`(二进制`1011`),输出`3`。答案:pythondefcount_bits(n):count=0whilen:n&=(n-1)count+=1returncount解析:利用位运算技巧:每次将`n`与`n-1`进行按位与操作,可以消去最低位的1。循环直到`n`为0,统计操作次数即为1的个数。二、系统设计题(共3题,每题15分,总分45分)1.题目:设计一个高并发的短链接生成服务。要求:1)链接长度短;2)支持高并发访问;3)支持自定义短链接前缀。答案:架构设计:-短链接生成:使用Base62编码(`a-z`,`A-Z`,`0-9`),将长链接的哈希值(如SHA256)取前6位,生成6字符短链接。可自定义前缀(如`/`+`abc123`)。-存储:使用Redis(支持高并发)存储短链接与长链接的映射,并设置过期时间(如24小时)。-分布式:部署多个服务实例,使用负载均衡(如Nginx)分发请求,Redis配置主从复制和哨兵机制保证高可用。-缓存:对热点短链接使用CDN缓存,减少后端压力。关键点:-哈希碰撞处理:可增加随机前缀或使用计数器避免冲突。-安全性:防止SQL注入或命令注入,短链接重定向时验证域名合法性。解析:短链接的核心在于高效编码与高并发处理。Base62编码能显著缩短长度,Redis高并发特性适合存储映射关系。分布式部署和CDN进一步提升性能和可用性。2.题目:设计一个实时日志分析系统,要求:1)支持多租户;2)支持实时查询;3)支持数据压缩与存储。答案:架构设计:-数据采集:使用Kafka(分布式消息队列)收集日志,支持多租户通过主题分区(如`tenant1_logs`,`tenant2_logs`)。-实时处理:使用Flink或SparkStreaming处理日志,支持多租户通过会话或流隔离。对日志进行解析、聚合(如统计词频)。-存储:-热数据:使用Elasticsearch(支持实时查询)存储最近7天日志。-冷数据:使用HDFS+Iceberg或S3存储历史数据,定期压缩(如GZIP)。-查询接口:提供RESTAPI(如`/api/v1/logs/search`),支持多租户认证(如JWT)。关键点:-分区设计:按租户或时间分区保证扩展性。-压缩策略:热数据不压缩,冷数据按需压缩(如7天内不压缩,之后GZIP)。-容错:Kafka集群+FlinkCheckpoint保证数据不丢失。解析:实时日志分析系统的核心是“实时”与“扩展性”。Kafka负责高吞吐采集,Flink处理实时计算,Elasticsearch提供快速查询,冷数据存储则需平衡成本与性能。3.题目:设计一个高可用的分布式配置中心(如Apollo),要求:1)支持动态刷新;2)支持权限控制;3)支持多数据中心同步。答案:架构设计:-存储层:使用etcd或ZooKeeper存储配置数据,支持多租户通过命名空间(如`tenant1/config`)隔离。-动态刷新:-客户端使用长连接(gRPC/WebSocket)订阅配置变更。-服务端变更时,通过Raft协议广播更新,客户端收到更新后重新加载配置。-权限控制:-使用RBAC(基于角色的访问控制),配置`user:role:permission`权限表。-客户端请求时验证token,服务端校验权限。-多数据中心:-使用etcd集群部署在多个数据中心,配置跨区域副本。-异步同步:通过消息队列(如RocketMQ)同步跨区域变更。关键点:-Raft协议保证数据一致性。-长连接减少客户端重新拉取配置的频率。-权限控制需支持细粒度(如某租户只能读写自身配置)。解析:配置中心的核心是“实时”与“安全”。etcd/Raft保证高可用,长连接优化性能,RBAC实现权限控制,多数据中心通过异步同步保证容灾。三、数据库与中间件题(共4题,每题10分,总分40分)1.题目:解释MySQL中的InnoDB和MyISAM的区别,并说明选择场景。答案:区别:-InnoDB:支持事务(ACID)、行级锁、外键,适合高并发写操作。-MyISAM:不支持事务、表级锁,支持全文索引,适合只读或低并发场景。选择场景:-InnoDB:金融系统、社交平台(需事务和锁)。-MyISAM:静态数据报表(如网站统计)。解析:InnoDB是现代数据库标配,支持复杂事务场景;MyISAM适合简单查询,但锁机制限制并发。2.题目:如何优化MySQL查询性能?列举三种常见优化方法。答案:1.索引优化:-覆盖索引:查询字段全在索引中(如`SELECTidFROMusersWHEREname='Alice'`)。-聚合索引:主键+其他字段(如`users(id,age)`)。2.SQL重写:-避免`SELECT`,指定字段。-使用`JOIN`替代子查询(如`SELECTFROMusersuJOINordersoONu.id=o.user_id`)。3.缓存:-对热点查询使用Redis缓存结果。-分页优化:使用`LIMIToffset,count`可能低效,改用`WHEREid>last_id`。解析:索引和SQL优化是性能提升关键。覆盖索引减少IO,JOIN提升查询效率,缓存降低数据库压力。3.题目:Kafka如何保证数据不丢失?列举两种机制。答案:1.生产者端:-`acks=all`:必须等待所有ISR(In-SyncReplicas)副本确认。-重试机制:配置`retries`>0,防止临时网络问题导致消息丢失。2.消费者端:-消息偏移量提交:使用`commitSync`保证不丢消息。-顺序消费:单个分区一个消费者,避免重复消费。解析:Kafka通过副本机制和确认机制保证可靠性。生产者端`acks=all`和重试,消费者端同步提交偏移量是关键。4.题目:Redis的RDB和AOF存储方式有何优劣?如何选择?答案:RDB:-优势:快照全量数据,恢复简单。-劣势:无法记录单条命令,故障时可能丢失最近数据。AOF:-优势:每条命令记录,故障恢复精确。-劣势:写入性能稍低(追加文件)。选择:-RDB:写入密集型场景(如秒级快照)。-AOF:读取密集型场景(如日志备份)。解析:RDB适合写入优先,AOF适合读取优先。生产环境通常混合使用(RDB定时快照+AOF持久化)。四、综合应用题(共2题,每题10分,总分20分)1.题目:假设你要为华录集团某视频监控系统设计数据库表结构,要求:1)支持视频文件关联多个监控点;2)支持按时间范围查询视频片段。答案:sql--监控点表CREATETABLEcameras(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(50),locationVARCHAR(100),statusINT--0:offline,1:online);--视频文件表CREATETABLEvideos(idINTAUTO_INCREMENTPRIMARYKEY,camera_idINT,filenameVARCHAR(100),upload_timeDATETIME,durationINT,--秒FOREIGNKEY(camera_id)REFEREN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江台州市椒江区三甲街道招聘4人考试参考题库及答案解析
- 2026年河南省漯河市事业单位联考招聘736人考试备考题库及答案解析
- 2026年安徽中医药大学资产经营有限公司第一批次校园招聘23名考试模拟试题及答案解析
- 中建七局2026届春季校园招聘考试备考试题及答案解析
- 2026陕西汉中汉台区3201医院招聘7人考试备考试题及答案解析
- 儿童文具盒按动弹力技术指标
- 儿童白血病化疗后骨髓抑制感染查验制度
- 游戏设计与游戏制作创意指导手册
- 智能家居产品安装与调试操作手册
- 平台合规经营诚信承诺书(5篇)
- 2025年中国干细胞医疗行业发展前景预测与投资战略规划分析报告
- 2025年河南机电职业学院高职单招语文2019-2024历年真题考点试卷含答案解析
- 冠脉介入并发症曾繁芳
- 经颅多普勒超声操作标准
- 学前教育学 第3版 教案 第四章学前教育活动的组织与指导
- 电力行业紧急情况处理措施及应对
- 老旧供水设施改造项目可行性研究报告
- 读后续写主题篇-生活趣事 清单-2025届高三英语上学期一轮复习专项
- 设备安装安全管理
- 《丰子恺漫画欣赏》课件
- 冰雪奇缘课件教学课件
评论
0/150
提交评论