腾讯实习测试开发岗位面试总结

        腾讯测开的部门是用 go 语言,面试者是 java 技术栈。这场面试,最后还问了一个智力题,果然是腾讯的风格,目前只发现腾讯爱问这类题目,主要是考察面试者聪明不聪明。

问题记录

对go了解吗?部门主要是偏go语言的

答:说了之前学过一段时间,但是太长时间没有接触了,如果给一个礼拜的话就可以将相关知识捡回来

项目问答:说的是项目中写了用Redis提高了QPS,那么如果QPS提高了,用户客户端无限制地请求服务器,那么会导致Redis的连接打满吗?比如说能承载的QPS极限是10W,来了12W的请求,该怎么办呢?

说了使用限流的思路,可以使用其他中间件,比如说使用令牌桶,每秒钟以一定的速率放入令牌,然后只有取到令牌的请求线程才能执行秒杀操作,否则的话就可以让这个线程暂停,或者是执行自动重试、退出。

面试官补充:可以设置一个队列,就是将获得令牌失败的线程放入到一个队列中,然后的等待令牌有空余的时候,这时候就唤醒线程去重新竞争令牌,同时要考虑队列是否会产生内存溢出问题

项目问答:Redis中有遇到并发竞争问题吗?

答:说了秒杀优惠券的引发的并发竞争的问题,引出分布式锁,通过分布式锁来解决并发竞争问题,说了使用Redission来实现这个分布式锁。

项目问答:分布式锁的实现是怎么样的?

回答:

  • 1.互斥,只有一个线程能够在一个时间段内操作这个线程,通过setnx实现。

  • 2.可重入,可以通过一个设置一个hash结构,这个哈希结构是这样设置的{线程ID}=>{锁的重入次数},当线程到来的时候就判断有没有这个数据,如果有这个数据的话,那么就检查线程ID是否和自己的ID一样,如果一样的话就锁重试次数++,当重入结束的时候,就让这个锁的重入次数--,当锁的重入次数==0的时候,删除这个键

你可能感兴趣的:(面试汇总,面试,测试开发,go)