1点30分达到公司,公司还在午休,等到2点,前台好看的小妹妹带去进行第一轮面试,总共进行了2轮,2.5小时,结束,回家,等消息,感觉基本没戏了。
面试是一个很好说话的小哥
1、elk怎么做的,怎么同步数据,运行原理,如何进行分词拆分,如何维护分词本....关于elk这一块答得不好,因为没有在项目中真正的使用,是一个半成品。
2、redis的数据类型,项目中的应用,使用过哪几种。
解答:redis有5种数据类型string、hash、list、set、zse。string是最常用的key-value,计算站点访问量,在线人数,最大512M;hash可以存储序列化后的结构化数据,用于存储需要修改的数据如用户信息、会话共享等;list,队列,用的最多之一,越接近两端,速度越快,消息队列;set
3、PHP的优化,Nginx的优化,修改哪些关键参数
三个级别,首先是语言级别的优化,多使用PHP的内置函数,减少大计算,减少PHP做不擅长的事情
4、系统监控,如何报警,报警后如何处理。
PHP Server Monitor,开源监控系统
5、大数据量导出,如何保证内存不溢出,保证完成。
首先分析应用场景,需不需要实时导出。如果需要实时导出,使用PHPoffice/PhpSpreadsheet或者使用php-ext-xlswriter进行分批导出,开启不超时设置,增大内存限制,防止内存溢出,使用PHP输出流输出到浏览器。如果不需要实时导出,则可以使用分批异步的形式输出到csv格式,最后提示到前端给用户直接下载。
6、高并发情况,秒杀解决方式
比如秒杀,是一个系统性的解决方案,首先将库存等关键数据存入到redis,然后将每一个符合要求的秒杀结果请求放入队列进行排队创建订单,如果秒杀失败,则redis库存+1,秒杀成功,库存-1,当redis库存为0,则秒杀结束。当然小数据量的秒杀,可以使用mysql的排他锁进行操作库存。
或者使用两个队列,一个队列存库存,一个队列存用户信息,一个请求过来先弹出库存,如果库存有则将用户信息压入另一个队列,如果没有库存,则就结束秒杀,如果秒杀失败,则将库存压入队列,重新进入秒杀。
7、锁机制,使用过什么锁
锁根据功能分为共享锁,排他锁,行锁,意向锁,
https://www.php.cn/mysql-tutorials-418309.html
8、消息队列,是否使用过RebitMQ
9、websocket,swool是否使用过
10、SQL优化,如何进行
11、如何保持程序常驻内存
12、大数据
13、PHP压测
使用ab进行压测,看每秒最大请求数、每次请求平均耗时等等数据
14、PSR代码规范
基本编码规范、自动加载规范、日志接口规范、HTTP规范、缓存接口规范、容器接口、超媒体链接、HTTP工厂、HTTP客户端
15、CICD,jinkens自动化部署
16、分库分表,性能排序
17、如何优化,索引级别
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。