{eval=Array;=+count(Array);}

问答专栏Q & A COLUMN

php程序员面试题都有哪些?

ruicbAndroidruicbAndroid 回答1 收藏1
收藏问题

1条回答

kumfo

kumfo

回答于2022-06-22 19:25

想了解IT界的那些事儿,请关注萌新程序猿!!!

刚好我之前在自己的个人网站(

www.onezero.cc

)中整理过此类的知识,因此特地奉上。

首先总结一下,既然是php程序员,下面的知识是最基本的:

  1. 你需要了解PHP的各类基础知识,php语法、面向对象、设计模式等等,
  2. 其次你需要懂得PHP的开发框架的知识,tp、laveral、yii等,
  3. 再次你需要了解前端的知识,
  4. 了解数据库(mysql等)的知识,
  5. 了解php运行的服务器环境nginx、apache等,
  6. 更进一步你需要了解redis、缓存之类,
  7. 最后你需要掌握web开发安全的相关知识,比如sql注入、xss等。
  8. 写接口,很多公司是前后端完全分离。

个人面试整理

1.PHP的魔术变量都有什么?

  • __LINE__  文件中的当前行号。
  •   __FILE__  文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
  •   __DIR__  文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
  •   __FUNCTION__  常量返回该函数被定义时的名字
  •   __CLASS__  常量返回该类被定义时的名字(区分大小写)。
  •   __METHOD__  类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。
  •   __NAMESPACE__  当前命名空间的名称(区分大小写)。此常量是在编译时定义。

2.PHP超级全局变量(9个)

  • $GLOBALS  储存全局作用域中的变量
  •   $_SERVER  获取服务器相关信息
  •   $_REQUEST 获取POST和GET请求的参数
  •   $_POST   获取表单的POST请求参数
  •   $_GET   获取表单的GET请求参数
  •   $_FILES   获取上传文件的的变量
  •   $_ENV   获取服务器端环境变量的数组
  •   $_COOKIE  浏览器cookie的操作
  •          设置cookie:setcookie(name, value, expire, path, domain);
  •          获取cookie:$_COOKIE[“user”];
  •          删除cookie:setcookie(“user”, “”, time()-3600);//设置过期时间
  •   $_SESSION  服务端session的操作
  •          使用session前一定要session_start()启动session
  •          储存session:$_SESSION[“name”]=”King”;//数组操作
  •          销毁session:unset($_SESSION[“name”]);//销毁一个
  •          session_destroy()和unset($_SESSION);//销毁所有的session

3.PHP魔术函数(13个)

  • __construct()   实例化对象时被调用,当__construct和以类名为函数名的函数同时存在时,__construct将被调用,另一个不被调用。
  •   __destruct()   当删除一个对象或对象操作终止时被调用。
  •   __call()      对象调用某个方法,若方法存在,则直接调用;若不存在,则会去调用__call函数。
  •   __get()     读取一个对象的属性时,若属性存在,则直接返回属性值;若不存在,则会调用__get函数。
  •   __set()     设置一个对象的属性时,若属性存在,则直接赋值;若不存在,则会调用__set函数。
  •   __toString()   打印一个对象的时被调用。如echo $obj;或print $obj;
  •   __clone()    克隆对象时被调用。如:$t=new Test();$t1=clone $t;
  •   __sleep()    serialize之前被调用。若对象比较大,想删减一点东东再序列化,可考虑一下此函数。
  •   __wakeup()   unserialize时被调用,做些对象的初始化工作。
  •   __isset()    检测一个对象的属性是否存在时被调用。如:isset($c->name)。
  •   __unset()    unset一个对象的属性时被调用。如:unset($c->name)。
  •   __set_state()  调用var_export时,被调用。用__set_state的返回值做为var_export的返回值。
  •   __autoload()   实例化一个对象时,如果对应的类不存在,则该方法被调用。

4.前端后端的常用开发框架都有哪些?

前端:(1) CSS: Bootstrap、EasyUI

(2)JavaScript:VUE.js、angular.Js、jQuery.js。

后端:thinkPHP、Yii、Laravel、swoole、workerman(当时只想到这几个)、。

5.如何查看防火墙开放的端口号service iptables status

6.查看防火墙特定的端口号,例如80端口的状态?netstat -an | grep 80 查看80端口被什么占用netstat -tunlp | grep 80lsof -i:80

7.Linux系统中System进程占用大量CPU,可能的原因?(1) 进入了一个死循环无法跳出来;(2) 也许是一直在等待一个信号,如从dbus上读取一个用户需要的信息; #dbus是一个为应用程序间通信的消息总线系统, 用于进程之间的通信。(3) 有可能是程序在对一个非常大的内容进行分析和处理;(4) 有可能是程序要处理的问题比较多,所以在一个个慢慢的执行。

8.说一下HTTP2.0与HTTP1.0的根本区别。

9.InnoDB和MyISAM的区别是什么,二者分别应用与什么方面?

10.用尽量多的方法说明如何提高一个网页的访问速度。

11.请设计一个通信协议,实现与摄像头之间的通信,要注意协议的安全性和可扩展性。

12.如果一个公司有几十个系统,每一个系统都需要登录,现在请你设计一个系统,可以实现每一个系统的单点登录。

其他整理

1、用PHP打印出前一天的时间格式是2017-9-5 15:30:21

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

2、echo(),print(),print_r()的区别

echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)

print只能打印出简单类型变量的值(如int,string)

print_r可以打印出复杂类型变量的值(如数组,对象)

echo — 输出一个或者多个字符串

3、能够使HTML和PHP分离开使用的模板

smarty,Heyes Template Class等

5、使用哪些工具进行版本控制?

VS Server on Apache作服务端,WinCVS作客户端;Subversion on Apache/DAV 做服务端,TortoiseSVN做客户端,或者Subclipse做客户端.

6、如何实现字符串翻转?

strrev()

7、优化MYSQL数据库的方法。

(1).选取最适用的字段属性,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

(2).使用连接(JOIN)来代替子查询(Sub-Queries)

(3).使用联合(UNION)来代替手动创建的临时表

(4).尽量少使用 LIKE 关键字和通配符

(5).使用事务和外键

8、PHP的意思

Hypertext Preprocessor

9、MYSQL取得当前时间的函数是?,格式化日期的函数是

now(), DATE_FORMAT(date,format)

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

mb_substr()

11、您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?

TortoiseSVN-1.2.6 svn-1.2.3

12、您是否用过模板引擎? 如果有您用的模板引擎的名字是?

smarty

13、请简单阐述您最得意的开发之作

14、对于大流量的网站,您采用什么样的方法来解决访问量问题?

首先,确认服务器硬件是否足够支持当前的流量

其次,优化数据库访问。

第三,禁止外部的盗链。

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

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

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

—————————————————————–

15、用PHP写出显示客户端IP与服务器IP的代码

16、语句include和require的区别是什么?为避免多次包含同一文件,可用(?)语句代替它们?

require()和include()除了怎样处理失败之外在各

方面都完全一样。include()产生一个警告而require()则导致一个致命错误。

换句话说,如果你想在丢失文件时停止处理页面,用require()。include() 就不是这样,脚本会继续运行。

require()无论如何都会包含文件,而include()可以有选择地包含.

代替用

include_once

require_once

17、如何修改SESSION的生存时间.

18、有一个网页地址, 比如PHP开发资源网主页: ,如何得到它的内容?

19、在HTTP 1.0中,状态码401的含义是(?);如果返回“找不到文件”的提示,则可用 header 函数,其语句为(?);

未授权(Unauthorized)

评论0 赞同0
  •  加载中...

最新活动

您已邀请0人回答 查看邀请

我的邀请列表

  • 擅长该话题
  • 回答过该话题
  • 我关注的人
向帮助了您的网友说句感谢的话吧!
付费偷看金额在0.1-10元之间
<