昨日PHP面试回顾

流程是一次性面完,先笔试,后技术1面、2面,最后hr面(到这里就基本过关了)
笔试考察内容比较基础, 写的手累...还是有挺多不会的点

笔试内容

  1. 简述TCP协议的3次握手;
    浏览器每次请求是否都需要建立TCP连接?为什么?
    说说HTTP缓存机制,其相关参数分别有哪些,含义是什么?

  2. 描述网络数据包发送方与接受方的传输过程

  3. HTTP Code 301、302分别指的是什么?
    HTTP Code 401、403有什么区别?
    HTTP Code 502、503、504呢?
    PHP是否可以通过代码模拟以上HTTP CODE?
    若生产环境下PHP发现5xx类错误,你如何筛查?
    是否分析过Nginx的日志,如何筛选出日志中请求最多的url和ip?

  4. 进程与线程有什么区别?
    同步、异步分别是什么?
    php如何实现异步任务?

  5. 为什么MySQL使用B+树而不是平衡二叉树?
    InnoDB的索引是如何实现的?
    简述B+树在Linux硬盘上是如何查询的

  6. 用过哪些nosql?
    简述缓存穿透、缓存雪崩。
    如何解决这些问题?
    并发达到5000、1W的时候,数据更新的方案是怎样的?

  7. MySQL中int与bigint有什么区别?
    int(10)与int(1)有什么区别?
    char与vachar有存储长度的上限吗?以用户表为例,举出一些使用案例。
    InnoDB有哪些锁的类型?
    表锁与行锁有什么区别?
    什么是死锁,如何解决?

  8. Redis有哪些数据类型,哪些类型时间复杂度比较高?
    如何实现Redis分布式锁?
    如何查看Redis的慢查询,多长时间算慢查询呢? (有点忘了, 大概这样

  9. MySQL查询慢时,你第一想到的是如何解决?
    有哪些优化SQL执行慢的方法

  10. Leecode第1题

  11. Leecode第3题

  12. 你是如何解决技术上遇到的问题的?
    最近读过的技术书有哪些?

技术面

先主要介绍自己的工作、项目经历, 然后描述一下自己遇到过的问题,是如何解决的。
后来因为实在说不出什么,变成了提问的方式。
主要问到B+树特点、算法题的处理逻辑、Redis的数据类型及具体使用场景举例。然后问问主从,由于没有实践过于是跳过了。

插曲

  1. 技术面问到算法题逻辑的时候,把“双指针”说成了“双链表”(并没有被指出来...

  2. 用python写的算法题,然后回答自己接下来想要学习go,结果面试官竟怀疑php是不是我的主语言(笑
    我的回复是“因为不想写$,另外当时练习算法题的时候都是用python”

简单总结

回头一看,自己表现一般,题目还是较基础,数据库方面的问题还是较多。
然后是常规的自己做过的项目,遇到的技术难点之类的,因为人家想要了解你。
所以还是要隔一段时间多对自己做总结。

你可能感兴趣的:(php面试)