yulu

普通PHP面试遇到的问题1

  1. 写出常用的字符串,时间,数组函数。

    1
    2
    3
    string: substr() , mb_substr() , strstr() , chr() , ord() , implode() , explode() , join() , split() , ucfirst() , ucwords() , strtolower() , strtoupper() , str_replace() , str_split() , strlen()
    time: date() , time() , mktime() , strtotime()
    array: array_shift() , array_unshift() , array_pop() , array_push() , array_merge(), in_array(), is_array(), array_chunk(),array_keys(), array_map(), array_diff(), array_key_exists(),array_splice(), array_search(),arrar_values(), array_replace()
  2. 如何用php内置函数显示3个不同时区的时间。

    • 有一个时间类DateTimeZone可以用来处理这件事
  3. 知道哪些协议,并大体说一下。
    • http协议:http协议是浏览器与服务器之间的通信的规则。其具有简单,快速,无状态,无连接的特点。其由三部分组成:状态行,消息报头(header),消息体(body) 组成。
    • 请求行以一个方法符号开头,以空格分开,后面有请求的URI和协议的版本。请求方法常用的有:get(),post(),put(),delete()。
    • 在接受和处理请求后,服务器返回一个http响应消息,其包括:状态行,消息头,响应正文。
    • 状态码解释如下:
      1xx:指示信息–表示请求已接收,继续处理
      2xx:成功–表示请求已被成功接收、理解、接受
      3xx:重定向–要完成请求必须进行更进一步的操作
      4xx:客户端错误–请求有语法错误或请求无法实现
      5xx:服务器端错误–服务器未能实现合法的请求
  4. 对mongodb的基础操作:创建表,创建索引。
    • mongodb可以在插入数据的时候动态的创建出数据集。
    • 创建索引:db.collectionname.createIndex({filed:1/-1});
  5. 对mysql的基础操作:创建一个user表,包含姓名,性别,uid,密码。此处需要注意的就是主键,字段的类型,长度的设置。
  6. 对框架的理解,大体写一个简单的框架。
  7. socket编程。
  8. CGI与FastCGI。
    CGI:CGI是一个协议,描述了服务器和请求处理程序之间传输数据的标准。CGI运行在独立的程序中即CGI程序,并为每个web请求创建一个进程,当完成任务进程就会被销毁。
    CGI的优缺点:基于CGI的运行方式,不停的启动和销毁进程受限于操作系统的性能,难以扩展;
    FastCGI:FastCGI是CGI的一个改进,FastCGI使用持续的进程来处理一连串的请求,这些进程是由FastCGI来管理,当请求到来时,web服务器会将环境变量和请求通过Socket或者TCP connection 传递给FastCGI进程。
    FastCGI的优点在于预先已经启动多个进程等待web请求,更灵活的处理web请求。
  9. 查看服务器日志中访问最多的前10个url
    cat access.log | awk ‘{print $num}’ | sort | uniq -c | sort -rn | head -10
  10. nginx关于php的location配置,关于静态文件的配置。
    1
    2
    3
    4
    5
    6
    7
    location ~ \.php$ {
    root html;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }

以上难点在于socket,框架,协议;其他我觉的还好。