php语言 百文网手机站

php面试备考知识点

时间:2021-03-17 16:08:14 php语言 我要投稿
  • 相关推荐

php面试备考知识点

  PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。为帮助有需要的朋友了解更多相关知识,以下是百分网小编搜索整理的关于php面试备考知识点,供参考借鉴,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

php面试备考知识点

  一. 基本知识点

  1.1 HTTP协议中几个状态码的含义:503 500 401 403 404 200 301 302。。。

  200 : 请求成功,请求的数据随之返回。

  301 : 永久性重定向。

  302 : 暂时行重定向。

  401 : 当前请求需要用户验证。

  403 : 服务器拒绝执行请求,即没有权限。

  404 : 请求失败,请求的数据在服务器上未发现。

  500 : 服务器错误。一般服务器端程序执行错误。

  503 : 服务器临时维护或过载。这个状态时临时性的。

  1.2 Include require include_once require_once 的区别.

  处理失败方式不同:

  require 失败时会产生一个致命级别错误,并停止程序运行。

  include 失败时只产生一个警告级别错误,程序继续运行。

  include_once/require_once和include/require 处理错误方式一样,

  唯一区别在于当所包含的文件代码已经存在时候,不在包含。

  1.3 (MySQL)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;

  int : 数值类型

  char : 固定长度字符串类型

  varchar : 可变长度字符串类型

  datetime : 时期时间类型

  text : 文本类型

  varchar和char有什么区别:

  a. char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。

  而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。

  b. char 固定长度,所以在处理速度上要比varchar快速很多,但是浪费存储空间,

  所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。

  1.4 error_reporting 等调试函数使用

  error_reporting() 函数能够在运行时设置PHP.ini中 error_reporting 指令。

  所以可以再程序中随时调节显示的错误级别。

  使用此函数时 display_errors必须是打开状态。

  1.5 写代码来解决多进程/线程同时读写一个文件的问题。

  php是不支持多线程的,可以使用php的flock加锁函数实现。

  $fp = fopen("/tmp/lock.txt", "w+");

  if (flock($fp, LOCK_EX)) { // 进行排它型锁定

  fwrite($fp, "Write something here ");

  flock($fp, LOCK_UN); // 释放锁定

  } else {

  echo "Couldn't lock the file !";

  }

  fclose($fp);

  1.6 写一段上传文件的代码。

  upload.html

  <form enctype="multipart/form-data" method="POST" action="upload.php">

  Send this file: <input name="name" type="file" />

  <input type="submit" value="Send File" />

  </form>

  upload.php

  $uploads_dir = '/uploads';

  foreach ($_FILES["error"] as $key => $error) {

  if ($error == UPLOAD_ERR_OK) {

  $tmp_name = $_FILES["tmp_name"][$key];

  $name = $_FILES["name"][$key];

  move_uploaded_file($tmp_name, "$uploads_dir/$name");

  }

  }

  1.7 mysql 的存储引擎,myisam和innodb的区别。

  a. MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.

  b. MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快.

  c. InnoDB不支持FULLTEXT类型的索引.

  d. InnoDB 中不保存表的具体行数,也就是说,

  执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,

  但是MyISAM只要简单的读出保存好的行数即可.

  e. 对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。

  f. DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。

  g. LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,

  但是对于使用的额外的InnoDB特性(例如外键)的表不适用.

  h. MyISAM支持表锁,InnoDB支持行锁。

  二. web 架构,安全,项目经验

  2.1 MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

  a. 设计良好的数据库结构,允许部分数据冗余,尽量避免join查询,提高效率。

  b. 选择合适的'表字段数据类型和存储引擎,适当的添加索引。

  c. mysql库主从读写分离。

  d. 找规律分表,减少单表中的数据量提高查询速度。

  e。添加缓存机制,比如memcached,apc等。

  f. 不经常改动的页面,生成静态页面。

  g. 书写高效率的SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM TABLE.

  2.2 对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题

  a. 确认服务器是否能支撑当前访问量。

  b. 优化数据库访问。参考2.3

  c. 禁止外部访问链接(盗链), 比如图片盗链。

  d. 控制文件下载。

  e. 使用不同主机分流。

  f. 使用浏览统计软件,了解访问量,有针对性的进行优化。

  2.3 写出一个正则表达式,过虑网页上的所有js/VBS脚本(即把标记及其内容都去掉):(9)。

  答:/<[^>].*?>.*?</>/si

  2.4 用PHP打印出前一天的时间格式是2006-5-10 22:21:21

  答:echo date('Y-m-d H:i:s', strtotime('-1 day'));

  2.5 echo(),print(),print_r()的区别

  答:echo是语言结构,无返回值;print功能和echo基本相同,不同的是print是函数,有返回值;print_r是递归打印,用于输出数组对象

  2.6 如何实现字符串翻转?

  答:.用strrev函数呗,不准用PHP内置的就自己写:

  [php] view plain copy

  strrev($str)

  {

  $len=strlen($str);

  $newstr = '';

  for($i=$len;$i>=0;$i--)

  {

  $newstr .= $str{$i};

  }

  return $newstr;

  }

  2.7 实现中文字串截取无乱码的方法。

  答:mb_substr()

  2.8 如何用php的环境变量得到一个网页地址的内容?ip地址又要怎样得到?

  答:$_SERVSR[‘REQUEST_URI’] , $_SERVER[‘REMOTE_ADDR’]

  2.9 求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数

  答:(strtotime(‘2007-3-6’)-strtotime(‘2007-2-5’))/3600*24

  2.10 如何通过JavaScript判断一个窗口是否已经被屏蔽

  答:获取open()的返回值,如果是null,就是屏蔽了