2025年全知科技笔试题及答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

2025年全知科技笔试题及答案

一、编程与算法题

1.给定一个用户行为日志数组logs,每个元素为字符串,格式为user_id,timestamp,action(如u1001,1700000000,click)。要求实现一个函数countActiveUsers(logs,interval),统计在任意连续interval秒内活跃用户数的最大值。

注:活跃用户指在该时间段内至少有一次行为记录。

示例:

输入:logs=[u001,1700000000,view,u001,1700000030,click,u002,1700000010,view,u003,1700000040,like],interval=30

输出:2(1700000000-1700000030秒内,u001和u002活跃)

答案:

defcountActiveUsers(logs,interval):

fromcollectionsimportdefaultdict

user_times=defaultdict(list)

#预处理:按用户分组并排序时间戳

forloginlogs:

uid,ts,_=log.split(,)

user_times[uid].append(int(ts))

#收集所有时间点并排序

all_times=[]

foruid,timesinuser_times.items():

times.sort()

all_times.extend([(t,uid,start)fortintimes])

all_times.extend([(t+interval,uid,end)fortintimes])

all_times.sort(key=lambdax:(x[0],0ifx[2]==endelse1))#结束事件先处理

max_active=0

current_active=0

active_users=set()

fort,uid,eventinall_times:

ifevent==start:

ifuidnotinactive_users:

active_users.add(uid)

current_active+=1

ifcurrent_activemax_active:

max_active=current_active

else:

ifuidinactive_users:

#检查是否有其他时间点覆盖当前结束时间

overlap=False

fort_startinuser_times[uid]:

ift_start=t-intervalandt_start+intervalt:

overlap=True

break

ifnotoverlap:

active_users.remove(uid)

current_active-=1

returnmax_active

解析:

-预处理阶段将日志按用户分组,并提取时间戳排序,便于后续区间判断。

-通过事件点(开始和结束)扫描线算法,按时间顺序处理每个用户的行为区间。

-结束事件处理时需检查是否有其他行为记录覆盖当前区间,避免误判用户退出。

2.实现一个LRU缓存(最近最少使用),要求支持get(key)和put(key,value)操作,时间复杂度O(1)。

答案:

classLRUCache:

def__init__(self,capacity:int):

self.capacity=capacity

self.cache={}

self.head=N

文档评论(0)

***** + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档