版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2026年谷歌中国面试题集精一、编程基础(3题,每题10分,共30分)1.题目:请实现一个函数,输入一个正整数`n`,返回`n`的二进制表示中`1`的个数。例如,输入`11`,返回`3`(因为`11`的二进制表示为`1011`,有`3`个`1`)。答案:pythondefcount_bits(n):count=0whilen:count+=n&1n>>=1returncount解析:使用位运算技巧,每次将`n`右移一位,并与`1`进行按位与操作,统计`1`的个数。时间复杂度为`O(logn)`。2.题目:给定一个字符串`s`,请判断其是否为回文串。例如,输入`"abcba"`,返回`True`;输入`"abcde"`,返回`False`。答案:pythondefis_palindrome(s):returns==s[::-1]解析:利用字符串切片功能,直接比较字符串与其反转后的值是否相同。时间复杂度为`O(n)`。3.题目:请实现一个函数,输入一个链表的头节点`head`,返回其反转后的链表。例如,输入`1->2->3`,返回`3->2->1`。答案:pythonclassListNode:def__init__(self,val=0,next=None):self.val=valself.next=nextdefreverse_list(head):prev=Nonecurrent=headwhilecurrent:next_node=current.nextcurrent.next=prevprev=currentcurrent=next_nodereturnprev解析:使用三指针法(`prev`、`current`、`next_node`)逐个反转节点指针。时间复杂度为`O(n)`。二、系统设计(2题,每题15分,共30分)1.题目:设计一个简单的URL缓存系统,要求支持以下功能:-`get(url)`:返回URL对应的缓存内容,若无缓存则返回`null`。-`put(url,content)`:将URL和内容存入缓存。假设缓存容量有限,当超出容量时,需要淘汰最早加入的缓存项(LRU缓存)。答案:pythonfromcollectionsimportOrderedDictclassLRUCache:def__init__(self,capacity:int):self.cache=OrderedDict()self.capacity=capacitydefget(self,url:str)->str:ifurlnotinself.cache:returnNoneself.cache.move_to_end(url)returnself.cache[url]defput(self,url:str,content:str)->None:ifurlinself.cache:self.cache.move_to_end(url)self.cache[url]=contentiflen(self.cache)>self.capacity:self.cache.popitem(last=False)解析:使用`OrderedDict`维护插入顺序,`get`时将访问的项移到末尾,`put`时如果超出容量则删除最早的项。时间复杂度为`O(1)`。2.题目:设计一个分布式限流系统,要求支持以下功能:-`is_allowed(ip)`:根据客户端IP地址判断是否允许访问。若允许,则记录访问时间并放行;若当前IP访问频率超过阈值,则拒绝访问。假设每个IP每分钟最多允许`100`次请求。答案:pythonfromcollectionsimportdefaultdictimporttimeclassRateLimiter:def__init__(self,max_requests:int,period:int):self.requests=defaultdict(list)self.max_requests=max_requestsself.period=perioddefis_allowed(self,ip:str)->bool:current_time=time.time()self.requests[ip]=[tfortinself.requests[ip]ifcurrent_time-t<self.period]iflen(self.requests[ip])<self.max_requests:self.requests[ip].append(current_time)returnTruereturnFalse解析:使用`defaultdict`记录每个IP的访问时间列表,每次调用`is_allowed`时先过滤过期时间,再判断是否超过阈值。时间复杂度为`O(1)`。三、数据库与存储(2题,每题15分,共30分)1.题目:假设你正在设计一个电商平台的订单表,表结构如下:-`order_id`(主键)-`user_id`-`product_id`-`quantity`-`order_time`(订单创建时间)请写出SQL查询语句,统计每个用户的订单总金额(假设`product_id`对应的金额存储在`products`表的`price`字段)。答案:sqlSELECTuser_id,SUM(quantityp.price)AStotal_amountFROMordersoJOINproductspONduct_id=duct_idGROUPBYuser_idORDERBYtotal_amountDESC;解析:使用`JOIN`连接`orders`和`products`表,计算每个用户的订单总金额。时间复杂度为`O(n)`。2.题目:为什么MySQL的InnoDB引擎支持ACID事务,而MyISAM引擎不支持?答案:InnoDB支持事务是因为:1.原子性:使用日志(RedoLog)保证事务要么全部完成,要么全部回滚。2.一致性:通过MVCC(多版本并发控制)确保数据一致性。3.隔离性:支持锁机制(行锁、表锁)和乐观锁(版本号)。4.持久性:通过redolog和binlog保证数据不丢失。MyISAM不支持事务是因为:1.非事务性:仅支持表级锁,无法保证原子性和隔离性。2.无日志机制:数据一旦写入无法回滚。解析:InnoDB通过日志和锁机制实现ACID,而MyISAM仅提供简单的表锁,无法满足事务需求。四、数据结构与算法(3题,每题10分,共30分)1.题目:请实现快速排序算法,输入一个无序数组,返回排序后的数组。答案: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)解析:选择基准值(`pivot`),将数组分为`left`、`middle`、`right`三部分,递归排序`left`和`right`。时间复杂度为`O(nlogn)`。2.题目:给定一个字符串`s`,请找到其中不重复的最长子串的长度。例如,输入`"abcabcbb"`,返回`3`(最长子串为`"abc"`)。答案:pythondeflength_of_longest_substring(s):char_map={}left=0max_len=0forrightinrange(len(s)):ifs[right]inchar_map:left=max(left,char_map[s[right]]+1)char_map[s[right]]=rightmax_len=max(max_len,right-left+1)returnmax_len解析:使用滑动窗口技术,`left`和`right`指针表示当前子串范围,`char_map`记录字符上一次出现的位置。时间复杂度为`O(n)`。3.题目:请实现一个函数,输入一个链表的头节点`head`,返回其中间节点。例如,输入`1->2->3->4->5`,返回`3`;输入`1->2->3->4`,返回`3`。答案:pythondefmiddle_node(head):slow=fast=headwhilefastandfast.next:slow=slow.nextfast=fast.next.nextreturnslow解析:使用快慢指针,快指针每次移动两步,慢指针移动一步,当快指针到达末尾时,慢指针在中间。时间复杂度为`O(n)`。五、行为面试(2题,每题10分,共20分)1.题目:请分享一次你解决过的最复杂的工程问题,你是如何分析的?答案:(参考回答)一次解决分布式系统中的缓存雪崩问题。首先定位到问题:某服务依赖的缓存大量失效,导致请求全部转落到数据库,响应时间飙升。分析后决定:1.增加缓存预热机制:定时预加载热点数据。2.设置缓存过期平滑:将过期时间分散到不同时间点。3.引入限流熔断:防止数据库
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农村人居环境数字化监管结题报告
- 薄膜厚度轮廓仪测量实验报告
- 巴旦木标准园建设标准
- FPGA设计及应用 课件 第5章 有限状态机
- T∕CHI 05-2025 酱香型白酒年份光学鉴别技术规范
- 自然语言处理(第3章)教案 语言模型预训练
- 2026年四川省阿坝州“五方面人员”中选拔乡镇领导班子成员考试测试题及答案
- 水泥厂区粉尘防爆及作业防护管理细则
- 学校传染病确诊病例应急预案
- 一级建造师考试(通信与广电工程管理与实务)真题及答案(锡林郭勒)
- 沈阳华润万象城调研报告148p
- 老年活动打麻将活动方案
- 借名贷款协议合同范本
- 医疗护理员国家职业标准(2024版)
- 《半导体设备零配件清洗技术规范》
- T-JWEA 0001-2025 水利水电工程施工图审查技术导则
- 《医疗机构人员廉洁从业九项准则》考试试题(附答案)
- 石油化工安装工程预算定额(2019版)
- 医院收费窗口服务规范
- 2025年供销社笔试题目及答案
- 2025年中国中车集团有限公司招聘笔试题库及答案解析
评论
0/150
提交评论