当前位置: 首页 > 后端技术 > PHP

畅意(上海)采访

时间:2023-03-29 16:14:07 PHP

1点30分到公司,公司还在午休。2:00,前台漂亮小姐姐带我去第一轮面试。一共2轮,2.5小时。回家,等消息,感觉比赛基本结束了。面试讲的很好1.elk是怎么工作的,怎么同步数据,运行原理,怎么进行分词,分词本子怎么维护...关于elk我没回答好,因为它是不在项目中真正使用的是一个半成品。2、redis的数据类型,在项目中的应用,用过哪些。答:redis有string、hash、list、set、zse5种数据类型。String是最常用的key-value,计算站点访问量和在线人数,最大512M;hash可以存储序列化的结构化数据,用于存储需要修改的数据,如用户信息、session共享等;list,queue,用得最多的一个,越靠近两端速度越快,消息队列;set3,PHP优化,Nginx优化,三个层面的关键参数修改,首先是语言层面的优化,多使用PHP的内置函数,减少大的计算,减少PHP不擅长的东西4.系统监控,如何报警,以及报警后如何处理。PHPServerMonitor,开源监控系统5.大数据量导出,如何保证内存不溢出,保证完成。先分析应用场景,是否需要实时导出。如果需要实时导出,使用PHPoffice/PhpSpreadsheet或php-ext-xlswriter批量导出,开启notimeout设置,增加内存限制防止内存溢出,使用PHP输出流输出到浏览器.如果不需要实时导出,可以使用批量异步的形式输出成csv格式,最后提示给前端让用户直接下载。6、在高并发的情况下,秒杀解决方案,比如秒杀,是一个系统的解决方案。首先将库存等关键数据存储在redis中,然后将每个符合条件的秒杀结果请求放入一个队列中进行排队创建订单。如果秒杀失败,则redis库存+1,如果秒杀成功,则库存-1,当redis库存为0时,秒杀结束。当然对于数据量小的秒杀,可以使用mysql的独占锁来操作盘点。或者使用两个队列,一个队列存储库存,另一个队列存储用户信息,当有请求到达时,库存会先弹出。如果有库存,则将用户信息推入另一个队列。如果没有库存,则秒杀将结束。如果秒杀失败,则将库存推入队列,重新进入秒杀。7.锁机制,你用过什么锁?锁按功能分为共享锁、排它锁、行锁和意向锁。https://www.php.cn/mysql-tutorials-418309.html8.消息队列,是否用过RebitMQ9,websocket,是否用过swool10,SQL优化,怎么做11,如何保持程序常驻内存12、大数据13、PHP压力测试使用ab进行压力测试,查看每秒最大请求数,以及每次请求平均消耗时间等数据14.PSR代码规范基本编码规范,自动加载规范、日志接口规范、HTTP规范、缓存接口规范、容器接口、超媒体链接、HTTP工厂、HTTP客户端15、CICD、jinkens自动部署16、分库分表、性能排序17、如何优化、指标水平