360奇安(本公司) 天擎部门面试:
问题所在:
问题:1、redis的sentinel上投票选举的问题
2、脑裂问题怎么处理
3、php导出,如果存在把内存打爆,怎么处理的
4、你觉得PHP相对比JAVA或者GO有什么异同
5、说说你在项目上有什么出色的表现? 我的说是我用时间切分进行算法上数据的调优
6、对于你们这个架构你觉得还有什么可以优化的
7、redis单线程结构有什么优势?有什么问题? 主要优势单线程,避免线程切换产生静态消耗,缺点是容易阻塞,虽然redis使用io复用epoll和输入缓冲区把命令按照队列先进先出输入等等
8、你觉得针对redis这些缺点那些命令在redis上不可使用? 比如keys、hgetall等等这些命令 建议用scan等等 这方面阐述
9、你觉得为什么项目中没有用mysql而用了es,redis在这里到底起到了什么作用?因为架构上这里理解不清楚,最后回答自己都觉得有漏洞了
10、你觉得redis什么算有用? 有用? 是说存进去了还是说命中缓存?最后把缓存命中率是什么说了一遍
11、看你上面写的开始学习go,你说说GO这边组合模式用PHP是怎么实现的? 组合....我都没学到
12、如果产品这里在你导出大文件的情况下,太占资源,你该怎么办? 断点续传
深信服
1 如果打开页面慢的话,怎么排查
2 怎么实现商城的商品推荐系统
3 sql语句 求一个成绩表中分数超过60的人的科目
4 innodb和myisam有什么区别
5 反转字符串
6 php的date参数
7 mysql的注入,怎么处理
8 平常在公司都处理什么工作的
9 一个sql语句不使用大于小于号中确定范围[ 60,80]
11 include和require区别
12 ===和==区别
13 date函数怎么插入上周时间
作业帮:
1、三次握手、四次挥手,为什么time_wait,2MSL具体多长时间
2、B+树和B树,联合索引等原理
3、自己项目数据库表是怎么样子的
4、一般项目PHP起几个进程
5、项目上线后有几个PHP服务器,单服务器出故障怎么处理 计算、存储、业务
6、网站打开慢了,你自己怎么处理
7、WAF有几台机器
8、你这个千万级别数据怎么处理的,分库分表?
9、PHP弱语言类型怎么实现的
10、PHP和JAVA区别
11、你们这边redis集群是怎么样子的
12、怎么查看CPU负载,怎么查看一个客户下有多少进程
13、怎么将Kafka数据导入数据库
总结一下:狂怼项目,对项目中细节都问的特别细,简称深入灵魂的拷问
顺丰
一面:
1、狂怼项目,然后问一些项目相关的知识,比如自己双写不一致问题,是写频繁还是读频繁,如果写频繁为什么还需要缓存,如果我要做的就是要修改数据库然后修改redis,怎么解决不一致问题。我的回答是redis分布式锁,然后讨论分布式锁以及redlock锁等等
2、http和https区别,非对称加密的过程
3、mysql的悲观锁和乐观锁区别和应用,ABA问题的解决
4、mysql索引的底层B+树,说说为什么使用B+树,跟红黑树有什么去呗
5、事务的可重复读幻读是什么情况,怎么解决幻读
6、http的一些字段,就你知道的回答一些
7、三次握手和四次挥手、为什么需要三次握手
二面:
1、http和https的区别,CA证书的优缺点,https抓包的时候出现的是什么,https防护的是什么
2、apache和nginx的区别
3、nginx的epoll模型的介绍以及io多路复用模型
4、狂怼项目
5、算法题,快排和一个变种的归并
今日头条
一面:
1、说说你的项目架构图以及数据走向
2、PHP源码的数组的排序是在底层源码哪里体现的。
3、PHP的垃圾回收机制
4、状态码 499、502、504这些是在什么场景出现的,你有在实际项目中看到吗
5、PHP如果一个页面超时,怎么查看是哪一个接口超时的。这里查看慢查询日志
6、PHP的FPM进程管理器的三种管理模式都有什么
7、比如你的服务器,一个小时前的cpu占用率到达百分之百,现在恢复正常,你怎么排查出来之前是什么原理导致的(这个可以看nginx的日志)
8、mysql的索引底层,以及覆盖索引和普通索引的区别,你平常怎么看你的SQL有没有使用到索引(我说的explain执行计划),如果使用了覆盖索引,在执行计划上面那个字段会体现,显示的是什么
9、redis的缓存穿透,布隆过滤器是怎么设计的
滴滴
一面:
1、两个手写算法题,一个复杂链表的翻转,一个字符串累加和
2、php的hashtable
3、foreach为什么比for循环快
4、php的fpm进程管理器的三种模式,优缺点是什么
5、php fpm进程master进程和worker进程分别的责任是什么
6、php常用的运行模式有哪些,fpm和cli运行生命周期是什么和fpm模式中在进行fcgi-accept-request中如何解决惊群现象的,你知道nginx怎么解决惊群现象的,区别呢?
7、redis数据结构是哪些,然后问我有序集合的底层,跳表的实现,时间复杂度以及如何加一个数据
8、redis字典的底层hashtable,以及和php的数组底层hashtable对比,以及redis的rehash过程,以及优化渐变式rehash
9、mysql索引底层数据结构,为什么使用b+树不用b树
10、mysql的数据页空洞是怎么造成的,如果解决,索引是局部还是全局的
11、mysql事务都有什么,以及幻读因为什么造成的
你有什么要问我的
二面
1、一个变种的纸牌算法(因为之前不知道,自己推,解出来将近半个小时)
2、画出项目架构图,以及数据流向,然后怼项目
3、进程和线程区别,什么时候用多进程什么时候用多线程
4、mysql索引底层数据结构,以及redis的hashtable和建遍式rehash过程
5、mysql的锁都有什么,怎么使用的,怎么结果mysql的可重复读的幻读
6、你的领导怎么评价你、你的同事怎么评价你、你自己怎么评价你自己、有什么优缺点、短期的目标计划呢、怎么改进自己的优缺点
腾讯:
一面:
1、怼项目,然后根据CAP理论设计出比当前解决方案更好的,如何架构
2、你的PHP是怎么做安全处理的,比如SQL注入、xss、csrf
3、项目开发怎么迅捷
4、设计模式的使用
5、mysql如果发生了抖动,怎么排查问题
6、你能说一下nginx的日志能排查些出什么问题
7、你的以后目标是什么,如何持续学习,你认为的架构师是什么样子的
二面:
1、怼项目
2、设计一个限流的算法
3、平常redis用的多的数据结构是什么,跳表实现,怎么维护索引,当时我说是一个简单的二分,手写二分算法,并且时间复杂度是怎么计算出来的 (2的k次方等于n k等于logn)
4、设计模式用了哪些,手写出来
5、mysql的索引底层,还有explain每个字段的介绍,以及type类型都有哪些,分别都代表什么意思
6、php的话平常如果碰到不会的函数,你是怎么解决的?
7、你有什么要问我的