2026年常见行业面试题及答案.docxVIP

  • 0
  • 0
  • 约3.42千字
  • 约 10页
  • 2026-02-11 发布于福建
  • 举报

第PAGE页共NUMPAGES页

2026年常见行业面试题及答案

一、编程能力测试(共3题,每题10分,总分30分)

1.题目:

请实现一个函数,输入一个整数数组,返回其中所有和为0的三个数的组合。例如,输入`[-1,0,1,2,-1,-4]`,输出`[[-1,0,1],[-1,-1,2]]`。

答案:

python

defthree_sum(nums):

nums.sort()

result=[]

n=len(nums)

foriinrange(n-2):

ifi0andnums[i]==nums[i-1]:

continue

left,right=i+1,n-1

whileleftright:

total=nums[i]+nums[left]+nums[right]

iftotal==0:

result.append([nums[i],nums[left],nums[right]])

whileleftrightandnums[left]==nums[left+1]:

left+=1

whileleftrightandnums[right]==nums[right-1]:

right-=1

left+=1

right-=1

eliftotal0:

left+=1

else:

right-=1

returnresult

解析:

1.首先对数组进行排序,便于使用双指针法。

2.遍历数组时,跳过重复的元素,避免重复组合。

3.使用双指针(left和right)在剩余部分中寻找和为0的组合。

4.若和为0,则加入结果,并移动指针跳过重复值;若和小于0,则左指针右移;若和大于0,则右指针左移。

2.题目:

请用Redis实现一个简单的分布式锁,要求包含锁的获取和释放。

答案:

python

importredis

importtime

classRedisLock:

def__init__(self,redis_client,lock_key,expire_time=10):

self.redis_client=redis_client

self.lock_key=lock_key

self.expire_time=expire_time

defacquire(self,timeout=10):

identifier=str(time.time())

whiletimeout0:

ifself.redis_client.setnx(self.lock_key,identifier):

self.redis_client.expire(self.lock_key,self.expire_time)

returnTrue

time.sleep(0.1)

timeout-=0.1

returnFalse

defrelease(self,identifier):

script=

ifredis.call(get,KEYS[1])==ARGV[1]

then

returnredis.call(del,KEYS[1])

else

return0

end

self.redis_client.eval(script,1,self.lock_key,identifier)

解析:

1.使用`setnx`尝试获取锁,若成功则设置过期时间。

2.获取锁时设置超时,避免死锁。

3.释放锁时,使用Lua脚本确保原子性,防止其他线程误删。

3.题目:

请解释HTTP缓存的工作原理,并说明`Cache-Control`头的常见取值及其作用。

答案:

HTTP缓存分为强制缓存和协商缓存:

1.强制缓存:直接使用本地缓存,无需请求服务器。

-`Expires`:若未设置`Cache-Control`,则使用`Expires`。

-`Cache-Control:max-age`:指定缓存有效时间(秒)。

2.协商缓存:本地缓存失效后,向服务器发送请求验证。

-`Last-Modified`/`If-Modified-Since`:若服务器未修改,返回304。

-`ETag`/`If-None-Match`:使用ETag验证缓存是否一致。

`Cache-Control`常见取值:

-`public`:可被任何缓存存储。

-`private`:仅用户代理缓存(如浏览器)。

-`no-cache`:缓存需重新验证(如304)。

-`no-store`:禁止缓存。

-`

文档评论(0)

1亿VIP精品文档

相关文档