腾讯测开的部门是用 go 语言,面试者是 java 技术栈。这场面试,最后还问了一个智力题,果然是腾讯的风格,目前只发现腾讯爱问这类题目,主要是考察面试者聪明不聪明。
问题记录
对go了解吗?部门主要是偏go语言的
答:说了之前学过一段时间,但是太长时间没有接触了,如果给一个礼拜的话就可以将相关知识捡回来
项目问答:说的是项目中写了用Redis
提高了QPS,那么如果QPS提高了,用户客户端无限制地请求服务器,那么会导致Redis的连接打满吗?比如说能承载的QPS极限是10W,来了12W的请求,该怎么办呢?
说了使用限流的思路,可以使用其他中间件,比如说使用令牌桶,每秒钟以一定的速率放入令牌,然后只有取到令牌的请求线程才能执行秒杀操作,否则的话就可以让这个线程暂停,或者是执行自动重试、退出。
面试官补充:可以设置一个队列,就是将获得令牌失败的线程放入到一个队列中,然后的等待令牌有空余的时候,这时候就唤醒线程去重新竞争令牌,同时要考虑队列是否会产生内存溢出问题
项目问答:Redis中有遇到并发竞争问题吗?
答:说了秒杀优惠券的引发的并发竞争的问题,引出分布式锁,通过分布式锁来解决并发竞争问题,说了使用Redission来实现这个分布式锁。
项目问答:分布式锁的实现是怎么样的?
回答:
-
1.互斥,只有一个线程能够在一个时间段内操作这个线程,通过setnx实现。
-
2.可重入,