PHP面试/笔试题杂记 IV

时不时看一些笔试面试题,发现自己的薄弱的地方

PHP的垃圾回收机制

PHP 可以自动进行内存管理,清除不需要的对象。

PHP 使用了引用计数 (reference counting) GC 机制。

每个对象都内含一个引用计数器 refcount,每个 reference 连接到对象,计数器加 1。当 reference 离开生存空间或被设为 NULL,计数器减 1。当某个对象的引用计数器为零时,PHP 知道你将不再需要使用这个对象,释放其所占的内存空间。

  • 存放位置: Session保存在服务器; Cookie保存在客户端
  • 存放的形式: Session是以对象的形式保存在服务器; Cookie以字符串的形式保存在客户端
  • 用途: Cookie适合做保存用户的个人设置,爱好等; Session适合住客户的身体验证;
  • 路径: Session 不能区分路径,同一个用户在访问一个网站期间,所有的 Session 在任何一个地方都可以访问到; 而 Cookie 中如果设置了路径参数,那么同一个网站中不同路径下的 Cookie 互相是访问不到的。
  • 安全性: Cookie 不是很安全,别人可以分析存放在本地的 COOKIE 并进行 COOKIE 欺骗,考虑到安全应当使用 session
  • 大小以及数量限制: 每个域名所包含的 cookie 数:IE7/8,FireFox:50 个,Opera30 个; Cookie 总大小:Firefox 和 Safari 允许 cookie 多达 4097 个字节,Opera 允许 cookie 多达 4096 个字 节,InternetExplorer 允许 cookie 多达 4095 个字节;一般认为 Session 没有大小和数量限制。

如何修改Session的生存时间

  • 设置浏览器保存的sessionid的失效时间
1
setcookie (session_name (), session_id (), time () + $lifeTime, "/");
  • 可以使用session自带的session_set_cookie_params(86400)来设置session的生存期

  • 通过修改 php.ini 中的 session.gc_maxlifetime 参数的值就可以改变 session 的生存时间

长连接、短连接的区别和使用

  • 长连接: client 方与 server 方先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。此种方式常用于 P2P 通信。
  • 短连接: Client 方与 server 每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。C/S 通信。

HTTP协议详解、应用

HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、短连接、灵活、应用层的协议,常基于 TCP 的连接方式。

  • HTTP 响应状态码

    • 1xx: 指示信息 – 表示请求已接收,继续处理
    • 2xx: 成功 – 表示请求已被成功接收、理解、接受
    • 3xx: 重定向 – 要完成请求必须进行更进一步的操作
    • 4xx: 客户端错误 – 请求有语法错误或请求无法实现
    • 5xx: 服务器端错误 – 服务器未能实现合法的请求
  • 常见状态代码、状态描述、说明:

    • 200 OK: 客户端请求成功
    • 304 Not Modifed: 自从上次请求后,请求的网页未修改过。
    • 400 Bad Request: 客户端请求有语法错误,不能被服务器所理解
    • 401 Unauthorized: 请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域一起使用
    • 403 Forbidden: 服务器收到请求,但是拒绝提供服务
    • 404 Not Found: 请求资源不存在,eg:输入了错误的 URL
    • 500 Internal Server Error: 服务器发生不可预期的错误
    • 503 Server Unavailable: 服务器超时

Socket 连接步骤

  • Socket (套接字) 概念

套接字(socket)是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议本地主机的 IP 地址本地进程的协议端口远地主机的 IP 地址远地进程的协议端口

  • Socket 连接过程

建立 Socket 连接至少需要一对套接字,其中一个运行于客户端,称为 ClientSocket ,另一个运行于服务器端,称为 ServerSocket

套接字之间的连接过程可以分为三个步骤:服务器监听客户端请求连接确认

  • 服务器监听: 是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
  • 客户端请求: 是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
  • 连接确认: 是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

TCP协议, 三次握手、四次挥手

TCP 协议 (Transmission Control Protocol) 是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接,四次挥手断开连接。

位码即 tcp 标志位,有 6 种标示:

  • SYN(synchronous 建立联机同步)
  • ACK(acknowledgement 确认)
  • PSH(push 传送)
  • FIN(finish 结束)
  • RST(reset 重置)
  • URG(urgent 紧急)

MySQL Query 语句优化的基本思路和原则

    1. 优化需要的优化的Query
    1. 定位优化对象的性能瓶颈
    1. 明确优化目标
    1. 从Explaing 入手
    1. 多使用Profile
    1. 永远用小结果集推到大的结果集
    1. 尽可能在索引中完成排序
    1. 只取资金需要的Columns
    1. 仅仅使用最有效的过滤条件

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2023 Keep It Simple And Stupid All Rights Reserved.

访客数 : | 访问量 :