PHP程序员面试中经常被提问的问题【转载】

1. Include 与 require的区别,require和require_once的效率哪个高?

  Php在遇到include时就解释一次,如果页面中出现10次include,php就解释10次,而php遇到require时只解释一次,即使页面出现多次require也只解释一次,因此require的执行效率比include高。

Php使用require包含文件时将被包含的文件当成当前文件的一个组成部分,如果被包含的文件中有语法错误或者被包含的文件不存在,则php脚本将不再执行,并提示错误。

Php使用include包含文件时相当于指定了这个文件的路径,当被包含的文件有语法错误或者被包含的文件不存在时给出警告,不影响本身脚本的运行。

Include在包含文件时可以判断文件是否包含,而require则不管任何情况都包含进来。

Require的效率比require_once的效率更高,因为require_once在包含文件时要进行判断文件是否已经被包含。

 

2. Cookie和session的区别,禁止了cookie后session能正常使用吗?session的缺点是什么?session在服务器端是存在哪里的?是共有的还是私有的?

  COOKIE保存在客户端,用户通过手段可以进行修改,不安全,单个cookie允许的最大值是3k。而SESSION保存在服务器端,相对比较安全,大小没有限制。禁用了cookie之session不能正常使用。

Session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。

Session保存在服务器端的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。

Session文件是公有的。

三. 怎么防止sql注入?

1、过滤掉一些常见的数据库操作关键字:select,insert,update,delete,and,*等

或者通过系统函数:addslashes(需要被过滤的内容)来进行过滤。

 2、在PHP配置文件中

Register_globals=off;设置为关闭状态 //作用将注册全局变量关闭。

比如:接收POST表单的值使用$_POST['user'],如果将register_globals=on;直接使用$user可以接收表单的值。

 3、SQL语句书写的时候尽量不要省略小引号(tab键上面那个)和单引号

 4、提高数据库命名技巧,对于一些重要的字段根据程序的特点命名,取不易被猜到的

 5、对于常用的方法加以封装,避免直接暴漏SQL语句

 6、开启PHP安全模式

Safe_mode=on;

 7、打开magic_quotes_gpc来防止SQL注入

Magic_quotes_gpc=off;默认是关闭的,它打开后将自动把用户提交的sql语句的查询进行转换,把'转为\',这对防止sql注入有重大作用。

因此开启:magic_quotes_gpc=on;

 8、控制错误信息

关闭错误提示信息,将错误信息写到系统日志。

9、使用mysqli或pdo预处理。

 

 

四. 数据库索引有几类,分别是什么?什么时候该用索引

 普通索引、主键索引、唯一索引、全文索引

  并非所有的数据库都以相同的方式使用索引,作为通用规则,只有当经常查询列中的数据时才需要在表上创建索引。

5. 引用传值和非引用传值的区别,什么时候该用引用传值?什么时候该用非引用传值?

按值传递:函数范围内对值的改变在函数外都会被忽略。

按引用传递:函数范围内对值的任何改变在函数外也将反应出这些修改。

按值传递时,php必须复制值,如果操作的是大型的对象和字符串,这将是一个代价很大的操作。按引用传递不需要复制值,因此对性能的提高有好处。

当需要在函数内改变原变量的值时用引用传递,如果不想改变原变量的值用传值。

6. 写几个魔术方法并说明作用?

__call()当调用不存在的方法时会自动调用的方法

__autoload()在实例化一个尚未被定义的类时会自动调用此方法来加载类文件

__set()当给未定义的变量赋值时会自动调用的方法

__get()当获取未定义变量的值时会自动调用的方法

__construct()构造方法,实例化类时自动调用的方法

__destroy()销毁对象时自动调用的方法

__unset()当对一个未定义变量调用unset()时自动调用的方法

__isset()当对一个未定义变量调用isset()方法时自动调用的方法

__clone()克隆一个对象

__tostring()当输出一个对象时自动调用的方法

7. $_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILE的意思是什么?

它们都是PHP预定义变量。

$_REQUEST用来获取post或get方式提交的值

$_POST用来获取post方式提交的值

$_GET用来获取get方式提交的值

$_COOKIE用来获取cookie存储的值

$_SESSION用来获取session存储的值

$_FILE用来获取上传文件表单的值

 

8. 数组中下标最好是什么类型的,为什么?

数组的下标最好是数字类型的,数字类型的处理速度快。

9. ++i和i++哪一个效率高,为什么?

++i效率比i++的效率更高,因为++i少了一个返回i的过程。

10.magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?

Magic_quotes_gpc()是php配置文件中的,如果设置为on则会自动POST,GET,COOKIE中的字符串进行转义,在'之前加\

Magic_quotes_runtime()是php中的函数,如果参数为true则会数据库中取出来的单引号、双引号、反斜线自动加上反斜杠进行转义。

11.Echo()、print()、print_r()的区别?

Echo() 是PHP语法,可以输出多个值,不能输出数组。

Print() 是php的语言结构,可以输出单个简单类型的变量值。

Print_r() 是php函数,可以打印出复杂类型变量的值,如数组,对象。

12.谈谈你对Mvc的认识

MVC是一种设计模式,强制使输入、处理、输出分开,MVC的三个核心部分:M模型,V视图,C控制器。

视图就是用户看到并与之交互的界面。

模型就是程序的数据业务规则。

控制器接收用户的数组调用模型和视图去完成用户需求。

使用MVC的优点:低耦合、高重用性、较低的生命周期成本、快速开发部署、可维护性、可扩展性,有利于软件工程化管理。

MVC的缺点:没有明确的定义,完全理解并不容易。小型项目不适合用MVC。

13.框架中什么是单一入口和多入口,单一入口的优缺点

多入口就是通过访问不同的文件来完成用户请求。

单一入口只web程序所有的请求都指向一个脚本文件的。

单一入口更容易控制权限,方便对http请求可以进行安全性检查。

缺点:URL看起来不那么美观,特别是对搜索引擎来说不友好。

14.打印一个用‘.’链接的字符串时候,还可以用什么代替‘.’链接效率更高些?

可以用,代替.,效率更高。

15.提示类型200、404、502是什么意思?

200是请求成功,404是文件未找到,502是服务器内部错误。

16.编写一个自定义函数提取这段路径的的后缀名。

“Www/hello/test.php.html?a=3&b=4”

Function geturltype($url){

$info=parse_url($url);

Return end(explode('.',$info['path']));

}

17.你对Memcach的理解,优点有哪些?

Memcache是一种缓存技术,在一定的时间内将动态网页经过解析之后保存到文件,下次访问时动态网页就直接调用这个文件,而不必在重新访问数据库。使用memcache做缓存的好处是:提高网站的访问速度,减轻高并发时服务器的压力。

Memcache的优点:稳定、配置简单、多机分布式存储、速度快

转载于:https://www.cnblogs.com/guanzelin/p/10365048.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463504.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析

http://hi.baidu.com/lovegenggeng/blog/item/5d5c594c240830fed72afcd0.html英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析 黄龙旺  龚汉忠 (上海交通大学学报编辑部, 200030,上海) 在英文论文的编辑加工中,常会遇到such as, for example, e. g…

理解zookeeper选举机制

转载:https://www.cnblogs.com/shuaiandjun/p/9383655.html 一、zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点和red…

使用交互环境

使用交互环境许多脚本语言的解释器都提供了交互环境,我们可通过此环境与计算机沟通交流。为什么叫做交互环境?因为我们在这里通过编程语言与计算机沟通,让它做任何事情,它都会立刻照办并给予我们反馈。运行REBOL 解释器的方式很简…

[原创]K8 cping 3.0大型内网渗透扫描工具

[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器?其实也是插件化,但Cscan不需要编程同样可实现自定义功能,这比单纯插件化更容易实现插件功能Cscan旨在为用户提供一个高…

std::string的resize()与reserve()的区别

std::string的resize()与reserve()的区别: resize():改变的是size()与capacity()的大小 (1)、比原来的变小之后,后面的会被截断 (2)、比原来的变大之后,后面的会被填充新的东西,不同的编译器可能会不同 reserve():…

iMouse - 快速切换鼠标左右键

(此Blog是iMouse软件的官网)【名称】:iMouse【版本】:v1.2 (v1.2是首个公开发布版本,也是最新版,之前版本没有对外发布)【时间】:2012-01-06【关键词】:腱鞘炎、Swap、Mouse、切换、鼠标、鼠标手【功能】&a…

基本排序算法及分析(二):冒泡排序

冒泡排序和改进的冒泡排序 1/**//*------------------------------------------------------------------------------------------- 2Bubble_sort.h 3冒泡排序: 时间复杂度为O(N^2) 4改进的冒泡排序: 时间复杂度仍为O(N^2) 5 一般的冒泡排序方法有可…

洛谷负环板子题

洛谷负环板子题 差点没笑死我 之前的题解都在清一色diss bfs&#xff0c;吹爆dfs 如今改了数据bfs又崛起了&#xff0c;dfs回家种地了&#xff0c;哈哈哈哈哈 dfs版 1 // luogu-judger-enable-o22 #include<iostream>3 #include<cstdio>4 #include<queue>5 #…

std::vector中resize()和reserve()区别

在STL容器中vector用的还是比较多的&#xff0c;但是在使用时&#xff0c;会对resize()和reserve()的使用产生迷惑&#xff0c;现在就对这一情况做个对比&#xff1a; resize()&#xff1a;改变的是size()与capacity()的大小 (1)、比原来的变小之后&#xff0c;后面的会被截断…

设计师和开发人员更快完成工作需求的35个惊人的jquery插件教程(下)

jQuery是一个快速&#xff0c;简洁的工具&#xff0c;它可以遍历HTML文档&#xff0c;处理事件&#xff0c;执行动画&#xff0c;并添加AJAX。jQuery赋予web开发更多的选择机会&#xff0c;使网站产生令人难以置信的元素效果不像之前需要写下几十行代码实现相同的效果&#xff…

C#中一些格式的转换

1、DateTime 数字型 System.DateTime currentTimenew System.DateTime(); 1.1 取当前年月日时分秒 currentTimeSystem.DateTime.Now; 1.2 取当前年 int 年currentTime.Year; 1.3 取当前月 int 月currentTime.Month;1.4 取当前日 int 日currentTime.Day; 1.5 取当前时 int 时cu…

红黑树相关的信息

转载&#xff1a;https://www.cnblogs.com/wuchanming/p/4444961.html 红黑树相关的知识点&#xff0c;提高自己和面试应该用的到 1.stl中的set底层用的什么数据结构&#xff1f; 2.红黑树的数据结构怎么定义的&#xff1f; 3.红黑树有哪些性质&#xff1f; 4.红黑树的…

spring restTemplate使用方法

https://github.com/lenve/SimpleSpringCloud/tree/master/RestTemplate在Spring Cloud中服务的发现与消费一文中&#xff0c;当我们从服务消费端去调用服务提供者的服务的时候&#xff0c;使用了一个很好用的对象&#xff0c;叫做RestTemplate&#xff0c;当时我们只使用了Res…

打印菱形星号组合C程序

#include "stdio.h" #define N 9 //数组的行列数 int main(){char str[N][N]{0}; //例子,行列数应该是奇数int i,j;for(i0;i<N;i)for(j0;j<N;j)str[i][j] ;//先全部设为空格//在特定位置写入*号for(i0;i<N;i)for(j0;j<N;j){if(i0 || iN…

程序员的十层楼(11层)

第11层 上帝 看了上面的小标题&#xff0c;你可能会觉得奇怪&#xff0c;这篇文章不是讲“程序员的十层楼”吗&#xff1f;怎么冒出了第11层来了&#xff1f; 其实这并不矛盾&#xff0c;程序员确实只有十层楼&#xff0c;因为爬到第11层时&#xff0c;已经变成上帝&#xff0c…

函数局部变量和函数的参数在栈中的布局

#include <stdio.h> #include <iostream>using namespace std; void func(int p1, int p2, int p3) {int a p1;int b p2;int c p3;std::cout << "函数参数入栈顺序(栈在内存中向上伸长):从右到左" << std::endl;std::cout << &quo…

经验:Windows To Go准备工作

如果您准备使用USB设备带着您的移动Windows的话&#xff0c;您需要做好准备。从开发预览版到正式版&#xff0c;我也一直关注着Windows Go To这个新功能&#xff0c;所以&#xff0c;总结了些经验&#xff0c;分享给大家&#xff0c;希望能够帮助到大家&#xff0c;或者减少您的…

图表相同数据会自动合并问题(finereport)

finereport中&#xff0c;对于图表的操作&#xff0c;当遇到需要显示多个重复分类下的多个值时&#xff0c;由于自动合并相同数据&#xff0c;无法达到效果反复查询手册无果后&#xff0c;困扰好久&#xff0c;终想到了一个解决的办法&#xff1a;1、给查询的数据添加个列序号&…

简单的C语言程序合集

输出九九乘法表1 #include <stdio.h>2 int main()3 {4 int i,j;5 for(i1;i<9;)6 {7 for(j1;j<9;j)8 {9 if(i>j)10 {11 printf("%d*%d%d ",j,i,j*i);12 }13…

C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法 (转)

usingSystem;usingSystem.IO;usingSystem.Drawing;usingMicrosoft.Win32;usingSystem.Runtime.InteropServices;namespaceGetIconDemo { ///<summary>///提供从操作系统读取图标的方法 ///</summary>publicclassGetSystemIcon { ///<summary>///依…