PHP面试常见问答题

  1. 按值传递与按址传递的区别
    按值传递是实参和形参分别占用两个不同的存储空间. 函数内的变量改变不会影响函数外的值, 而按址传递是实参和形参共用同一存储空间, 函数内的变量的改变会影响函数外的值, 另外按址传参时, 传入的参数不能为非变量.

  2. 上传图片时如何筛出非图片
    查看type的值, 看 ‘/’ 之前的字符串是否为image, 若不是, 如text, application则是非图片

  3. 服务器中的session的存放位置
    服务器中的session数据默认以文件的形式存储在目录下, 目录路径可以使用phpinfo()函数查看, 而且文件名一般以为’sess_'拼接上sessionid的值.

  4. php中合并数组的函数有什么?
    array_merge: 参数为多个数组. 对于索引数组, 键名重复不会覆盖, 关联数组会.
    array_diff: 计算数组差集

  5. 对于存在redis中的数据, 如何使其持久化以备份数据
    可以存进redis的同时把数据存进数据库或者文件中, 也可以定期时redis数据磁盘持久化.

  6. get传参和post传参的区别?
    1).get通过url传参. post通过request body传参
    2). get会产生1个数据包, 发送请求时会将header和data同时发送给服务器,返回200的服务器码; 而post会产生2个数据包, 发送请求时会先发送header, 服务器返回100,再发送data,服务器返回200.
    3).get请求会缓存在浏览器, post默认不会
    4).get请求的url会保存在历史记录, 而post不会
    5).get请求中有非ascll值会先转码, 再发送请求. 而如果post中有非ascll, 不会转码, 因为post参数通过request body传递参数, 可以传递ascll值

  7. innodb引擎和mysim引擎设计表的区别?
    1). innodb支持事务, 而mysim不支持事务
    2). mysim不支持行锁, 当写表时会锁住整个表, innodb支持行锁, 从一定程度上降低死锁的概率.
    3)innpdb支持外键
    4). innodb没有保存记录总数, 而mysim有保存, 需要时直接读取即可
    5).清空表时, innodb会逐行清除,效率低, mysim会重新建表

  8. 字符串追加到数组的末尾
    array_push

  9. 查看某字符串中是否包含指定的字符串
    1). strpos()
    2)strstr()
    3)expole()
    4)substr_count()

  10. MySQL的int类型可以存储的最大字节数?
    int(M), 无论M是几, int类型存储的最大字节数仍是4个字节, 若加上限制条件unsigned, 取值范围为0~4294967295, 若不加unsigned, 取值范围为-2147483648~2147483647, 与M也无关, M只是存储数值得默认宽度, 例如int(3), 存储的值为22, 则实际存储的022.

  11. 建立联合索引 index(a, b, c)
    where a=1 and b=2
    where b=2 and c=3
    where a=2 or b=3
    请问3中语句分别用到设么索引?
    都用到了联合索引.

  12. session和cookie的区别, cookie关闭, 是否能使用session
    1)session将数据存在服务器, cookie存在浏览器
    2)session就是为了客户端同服务器对话而产生, 所以登录状态一般存在session
    3)cookie里存储了sessionId, 而sessionId通过请求头发送给服务器, 所以session依赖cookie,但是session也可以通过url传递

  13. apache和nginx的区别.nginx的fast_cgi的大概意思
    区别: apache是同步多进程的, 而nginx是异步多线程, apache是一个连接对应一个进程, nainx是多个连接对应一个进程, 当nginx接受一个请求时, 首先由cgi读取php配置文件,并初始化进程进而处理php请求, 这样如果同意时间大量请求, cgi就会非诚忙, 初始化进程->销毁进程 , 一致重复, 这样就有了fast-cgi, 他会生成多个进程, 节约了服务器开销
    区别: apache发展时间比nginx长, 比nginx性能稳定, 支持的公共能也多,但是nginx更适合处理高并发

  14. 浏览器访问的错误码
    200: 服务器成功处理请求
    202服务器接收请求成功, 但尚未处理
    301:永久重定向
    302:暂时重定向
    403: 没有权限访问
    404找不到页面
    500:服务器内部错误

  15. OOP的优点
    封装,继承,多态

  16. http和tcp的区别?

  17. tcp建立连接的3次握手和4次挥手?
    3次握手
    1).客户端A发送SYN包发起新连接,
    2).服务器端B发送SYN包和ACK包确认连接请求并发起一个新连接
    3).客户端A确认连接请求, 发送SYN包
    4次挥手
    1)客户端A发送Fin包终端连接
    2)服务器B返回确认包ACK包中断A到B的连接
    3)服务器B发起FIn包中断请求
    4)客户端A返回ACK确认包

  18. redis的数据类型(redis的库有哪些)
    1). 字符串
    2).哈希表
    3).列表
    4).有序集合
    5).无序集合

  19. redis有1亿个数据, 如何查找所有字符串首尾为指定字符的key值
    使用 keys 字符串*

  20. 消息中间件

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