0
点赞
收藏
分享

微信扫一扫

网易游戏面试

十日十月Freddie 2022-04-14 阅读 63
面试

标题

面试岗位

我的世界 --php开发工程师

1. udp 和 tcp 的区别

  • tcp 是可靠的有链接的传输层协议 , udp 是无连接的
  • tcp 三次握手四次握手

2. http 相比于 https 有什么区别?

3. cpu 调度原理

4. 线程和进程的区别

5. 非关系型数据库和关系型数据库的区别?

6. 非关系型数据库和关系型数据库各自的应用场景?

7. mysql 中有哪几种锁

有不同的分类方法:读写锁(排他,共享锁)
根据锁粒度:表锁,行锁,间隙锁

然后引出mvcc,mvcc 可以看成是一个特殊的行锁

8. 现在有个压测的场景,qps怎么压都压不上去,服务端cpu才70%左右,可能是什么问题?

  1. 有可能是发压机的问题,发压机起的线程数不够多,导致压不上去
  2. 如果单从业务上来说的话,php 有个最大进程数的设置,还有进程最大生命周期,可能是这两个值设置的有问题

9. 什么是cgi协议?

10. php zend引擎的生命周期?

11. 假设一个场景,php 创建一个mysql 链接,一个业务请求结束,变量都会被销毁?这么避免这种频繁创建的场景?

使用链接池的方式

12. php 这么实现连接池?

当时愣住了,因为突然想到,php-fpm的工作模式是,master-woker 的方式,每个请求都是由单独的worker 进程进行处理。然后想这个每次都会被释放掉,不能做连接池,所以懵了。

13. php 里面有个函数叫ob_start 这个函数是用来做什么的?

当时没有回答出来?
参考:来自php manual

14. 聊聊redis 实现一个互斥锁?

可以用setnx来实现。setnx 当key 不存在的时候创建
这个和redis 的工作模式有关,redis 的工作线程只有一个,所以处理的时候就变成串型化处理。

15. setnx 的机制?

16. setnx 解锁失败的问题这么处理?

setnx 可以同时设置失效时间来处理

17. 线上提供服务的redis 有个特别大的key ,他能直接删除吗

当时聊到了redis 的 惰性删除机制 lazyfree

18. 如果检测到线上redis 的cpu 比较高需要怎么处理?

聊到redis 的慢查询日志

19. 怎么找到redis 访问量最高的key ?

当时的回答是,可以分析下 aof 文件。但是aof 只记录写操作命令

20. 在单核机器上 运行一个多线程的程序,需要考虑加锁的问题吗?

21. redis 有个exist命令,这个命令的时间复杂度是多少?

0(1),因为redis 的键值对底层实现是用字典表来实现的。

22. 字典表会出现hash 冲突吗?

会,redis 是使用拉链法处理hash冲突并且,在达到一定的阈值之后,会使用rehash 进行重新调整数据结构。
聊了下具体rehash 的过程

23. rehash 会阻塞主线执行吗?

会,因为redis 的工作线程就是 单线程

24. 假如有个接口,需要频繁访问redis 的key ,之前的代码是通过for循环50次 访问redis 来获取,有什么优化空间?

  1. 可以使用mget
  2. pipline ,如果数据包不大的话吗,可以使用这种方式来获取

25. 什么是覆盖索引?

聊到了mysql innodb , 聚簇索引和 非聚簇索引。底层实现是 b+树,回表问题。

26. 时间复杂度最好的,均匀洗牌算法?

算法垃圾的我,挣扎了下就放弃 了。

小结

面试问题的答案,晚点写出来,先主要写问题。

基本不允许自己延伸知识点,所以被问了很多问题。感觉像是读稿问问题。

举报

相关推荐

0 条评论