PHP面试基础题

<?php

/** by http://www.manongjc.com/article/1524.html */

$conn = mysql_connect("localhost", "root", "mckee");

mysql_select_db("test",$conn);

mysql_query("set names utf8");

$sql = "SELECT * FROM category";

$res = mysql_query($sql);

while($row = mysql_fetch_assoc($res)){

    $arr[] = array($row[id],$row[fid],$row[value]);

}

getCate(0);

function getCate($fid = 0) {   

    global $arr; 

    for ($i = 0; $i < count($arr); $i++) {   

        if ($arr[$i][1] == $fid) {        

            echo $arr[$i][2] . "<br>"; 

            getCate($arr[$i][0]); //递归

        }

    }

}

?>

PHP的意思

超级文本预处理语言Hypertext PreProcessor

session与cookie的区别?

答案:

session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放.

cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。

两者都可通过时间来设置时间长短.

数据库中的事务是什么?

答案:事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

什么是MVC?

答案:MVC由Model(模型), View(视图)和Controller(控制器)组成,PHP MVC可以更高效地管理好3个不同层的PHP代码。

Model:数据信息存取层。

View:view层负责将应用的数据以特定的方式展现在界面上。

Controller:通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。

优化MYSQL数据库的方法?

使用连接(JOIN)、union、外键、建立索引、优化查询语句

    200 请求已成功,请求所希望的响应头或数据体将随此响应返回。 

    301 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。

    404 请求失败,请求所希望得到的资源未被在服务器上发现。

    502 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。 

    503 由于临时的服务器维护或者过载,服务器当前无法处理请求。

    200 OK 一切正常,对GET和POST请求的应答文档跟在后面。 

PHP支持多继承吗?为什么?

答案:不支持。PHP类只能继承一个父类,并用关键字“extended”标识。

ThinkPHP3.2国内使用比较多,优点是文档非常多,各种问题解决方案比较多,缺点是代码不够规范,理

请举例说明在你的开发过程中用什么方法来加快页面的加载速度

A.生成静态HTML

B.生成xml

C.可不用数据库的尽量不用数据库把变量参数存于文本.

mysql_fetch_row() 和 mysql_fetch_array() 有什么分别?

mysql_fetch_row() 把数据库的一列储存在一个以零为基数的阵列中,第一栏在阵列的索引 0,第二栏在索引 1,如此类推。mysql_fetch_assoc() 把数据库的一列储存在一个关联阵列中,阵列的索引就是栏位名称,例如我的数据库查询送回“first_name”、“last_name”、“email”三个栏位,阵列的索引便是“first_name”、“last_name”和“email”。mysql_fetch_array() 可以同时送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。

请举例说明在你的开发过程中用什么方法来加快页面的加载速度

答:要用到服务器资源时才打开,及时关闭服务器资源,数据库添加索引,页面可生成静态,图片等大文件单独服务器。使用代码优化工具啦

对于大流量的网站,您采用什么样的方法来解决访问量问题
首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

第四,控制大文件的下载。

第五,使用不同主机分流主要流量

第六,使用流量分析统计软件

解释一下PHP的类中:protect,public,private,interface,abstract,final,static的含义

Protected受保护的,在本类和子类中有效。

Public 公共的,在本类、子类中、类外都可以使用。

Private 私有的,在本类中有效。

Interface 定义一个接口时使用的关键字。

Abstract 定义一个抽象类或者抽象方法时使用的关键字。

Final 用final申明的方法无法被覆盖,用final申明的类不能被继承。

Static 定义静态方法或者静态属性使用的关键字


PHP面试         

一、技术问题      

     (1)基础知识:如数组的操作,变量的操作,字符串的处理。主要考察数组、字符串的函数。还有cookie和session的概念和区别。       

     (2)面向对象:面向对象的思想和理论知识,如继承、接口、抽象类、多态等。            

     (3)文件操作:比较典型的两个问题:             

              ①遍历目录:使用递归来遍历目录,延伸出来就是无限级分类        

              ②读取大文件:内存不够,如何读取文件内容         

     (4)数据库知识:         

               ①设计数据库表,按照要求去谢sql查询。常见的有订单表、商品表;学生表、成绩表、班级表;省市区表。        

               ②php操作数据库的基本功底,手写php操作数据库的代码。                 

               ③数据库性能优化。其中包括MySQL的使用以及性能优化。比如int(1)和int(10)的区别,存储类型的选取;MySQL的索引,组合索引和覆盖索引等;MySQL中四种隔离级别的理解。典型问题:一张表有100万条数据,写思路优化或者优化sql;一万条数据同时插入数据库如何保证效率。         

      (5)Linux能力。linux基础知识,常用的命令要熟悉使用。比如在nginx访问日志中,查找出一天接口访问类前十名。            

      (6)数据结构与算法能力。基本的排序方法,如冒泡排序、快速排序、二分查找排序;或者给你一道题,手写一个方法,去实现效果,比如100元分给10个人,每人至少6元,最多12元,必须分完100元。最常问到树的遍历和排序。        

      (7)服务器安全问题:sql注入、xss攻击等。编程时如何预防这些问题。        

      (8)框架问题:了解哪些框架,然后询问框架的一些基本问题。常用框架的MVC思想的理解,根据逻辑来捋清楚model和controller的关系,controller和view的关系。 

1:变量的传值与引用。
2:变量的类型转换和判断类型方法。
3:php运算符优先级,一般是写出运算符的运算结果。
4:PHP中函数传参,闭包,判断输出的echo,print是不是函数等。
5:PHP数组,数组函数,数组遍历,预定义数组(面试必出)。
6:PHP面向对象,魔术方法,封装、继承、多态。设计模式,包括(单利、工厂、迭代器、装饰、命令、策略)。
7:正则表达式,每个标号含义,邮箱、网址、标签匹配,正则函数(面试必出)。
8:PHP异常处理(级别,错误日志,控制错误输出)(面试必出)。
9:PHP时间函数,日期计算函数。
10:文件系统,记录日志、目录、文件的遍历、上传、多方法得到文件扩展名、文件引用方式、引用函数区别。(面试必出)。
11:会话控制,主要说原理。session与cookie在分布式应用中出现问题的解决方案。
12:PHP模板引擎,常用模板引擎特点,MVC好与不好的地方。
13:PHP安全处理,过滤函数。
14:XML的使用。
15:PHP字符串的处理,包括转义(安全)、编码、截取、定位、与数组间的转换、处理函数等。(面试必出)。
16:Socket编程,各种协议,head头,curl参数含义。
17:网络状态码含义,常用(204,304, 404, 504,502)。
18:Apache配置文件,PHP配置文件,各个含义字段的含义。
19:网络各种攻击的名词含义(SQL攻击、XSS、CSRF、DDos),防止措施。
20:url的处理函数,得到url指定的部分。

1:基础sql语句书写(一般让写关联和子查询语句)
2:索引的创建,优缺点,最左原则
3:存储引擎,常用的几个,优缺点,差别,原理(面试必出)
4:sql注入的处理方法
5:mysql处理函数(PHP中封装的)
6:PDO的使用方法,为什么使用
7:mysql的优化,表拆分等
8:事务处理,sql语句的处理效率等
9:数据表字段的类型,同类型间的区别,改如何选取,int(10)与int(11)的区别等。
10:数据库索引使用的那种数据结构,画出数据结构

思维导图

What is the difference between GET and POST?
(Question provided by Agli Pançi)

GET displays the submitted data as part of the URL, during POST this information is not shown as it’s encoded in the request.
GET can handle a maximum of 2048 characters, POST has no such restrictions.
GET allows only ASCII data, POST has no restrictions, binary data are also allowed.
Normally GET is used to retrieve data while POST to insert and update.

Variables in PHP do not have intrinsic types - a variable does not know in advance whether it will be used to store a number or a string of characters

<?php
define("MINSIZE", 50);
echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous line
?>

Associative array − An array with strings as index. This stores element values in association with key values rather than in a strict linear index order.

The real PDO benefits are:

security (usable prepared statements)
usability (many helper functions to automate routine operations)
reusability (unified API to access multitude of databases, from SQLite to Oracle)
Note that PDO supports positional (?) and named (:email) placeholders

$host = '127.0.0.1';
$db   = 'test';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];
$pdo = new PDO($dsn, $user, $pass, $opt);
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = ? AND status=?');
$stmt->execute([$email, $status]);
$user = $stmt->fetch();
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值