一、mysql的四种隔离级别
- 未提交读(READ UNCOMMITTED)。事物中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,也称为脏读(Dirty Read)。
- 提交读(READ COMMITTED)。一个事务开始,只能看见已提交的事务所做的修改,也叫不可重复读(nonrepeatable)。
- 可重复读(REPEATABLE READ)。该级别解决了脏读的问题,并且保证了在同一事物中多次读取同样的记录结果是一致的。但是,该级别还是无法解决幻读(Phantom Read)的问题。可重复读是mysql默认事务隔离级别
- SERIALIZABLE(可串行化)。最高隔离级别,通过强制事务串行执行,避免了幻读的问题。简单来说,就是在读取的每一行数据上都加锁,所以可能导致大量的超时和锁争用的问题。
回答了脏读、不可重复读、幻读,概念搞混了。
答案来自书籍高性能mysql第三版
二、redis10万条中读取一条数据的时间复杂度是a,100万条中读取一条数据的时间复杂度是b,a和b的关系
大致是这个意思,希望有大佬给个解释
三、rabbitmq如何实现消息持久化
回答了在声明队列跟声明消息的时候可以设置一个参数,查了一下,durable=true就可以了
四、rabbitmq消费者在消费消息时死机,消息未处理,但是消息丢失了,怎么处理这个情况
回答了rabbitmq是通过ack机制,默认是自动ack,只要改为在消息处理完之后手动ack就可以了
详细的可以网上自行搜一下,都有 https://www.jianshu.com/p/19e0927315da
五、for和foreach哪个快,为什么
脱口而出for,回答不上来为什么。面试官告诉我其实是foreach,因为for每次多执行比较和I++
网上找到一篇,感觉还不错 https://blog.csdn.net/bk_guo/article/details/73322691/
六、读取4t大小的单文件
应该是考察linux方面的吧,面试官的意思我没明白,也不知道怎么处理
七、浏览器禁用了cookie,session能否读取,为什么
我的回答是不能,PHP通过浏览器携带的cookie中的session_id获取相信的session信息,如果浏览器禁用了cookie就不能找到相匹配的session文件
附带一篇相关文章 https://blog.csdn.net/w1229748769/article/details/75244389
八、浏览器发送http请求到php返回结果的全过程
这个问题我回答了比较简单了,浏览器发送请求,nginx接收请求,通过监听端口发给fpm,然后php处理......
实际上没有这么简单,中间少了很多详细部分,也错了,这个问题经常碰到,建议详细了解
九、ipv4地址存什么类型最省空间,通过什么方式处理,原理是什么
回答int类型,通过php自带函数ip2long,原理答不上来
十、有个定期生成的月报需求,怎么做
回答如果只要一个月报,就通过linux定时任务去做,生成了文件放服务器,需要的时候再下载或者读取,如果是很多,就扔给消息队列做
主要考察解决思路吧
十一、有一个方法,需要处理十几分钟的,设计一个对用户体验好的方案
用户触发方法,提交到消息队列,执行完毕后通过websocket提示用户已经完成
考察思路
面试官大部分问题还是针对简历上写的提问,但是自己遗忘的太多,回答的不怎么样