php开发工程师面试题(通用10篇)
【1 】Memcached、redis的使用和理解
Memcached和redis 都是一个key-value的内存式存储系统,通过hash表来存储检索结果,做到强大的缓存机制。像新浪的微博、淘宝等大流量站点都必须的使用了这些东东。
Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。
【2】你对于设计模式和MVC的理解
Model-View-Controller,模型、视图、控制器,一想到MVC就会想到JAVA,因为JAVA是一个完全面向对象的语言,MVC最早出现在smalltalk中,其核心就是要将试图和数据模型分离,这样不同的程序就可以有不同的展示。
模型,即程序员写的功能、算法和数据模型,也就是我们说的系统业务逻辑层。
视图,即前端,图形界面。展示给用户看的。
控制器,主要负责对请求处理、转发和加载视图。
设计模式,说白了就是代码的设计经验的总结和归类,设计模式最早应用于建筑行业,编程的设计模式按最早的GoF所述,包括23种设计模式,主要用于面向对象的程序编程。遵循几个设计原则:开闭原则、单一职责原则、里氏替换原则、依赖注入、接口分离、迪米特原则、优先使用组合而不是继承等等。包括创建型模式、结构性模式、行为模式三类。
【3】HTTP协议1.0及1.1的区别,并简单说下HTTP协议
HTTP,超文本传输协议。它定义了浏览器和服务器的通信规则。HTTP协议是基于TCP/IP的TCP协议上,现在万维网使用的是HTTP1.1版本,其特点包括,C/S模式,请求简单(GET/POST/HEAD),灵活(可以传输任何类型的数据HTML、XML、JSON、自定义等),无连接(每次连接只处理一个请求,从发出请求到收到200状态为止断开连接),无状态。
对HTTP协议的考察主要包括,响应消息格式、请求消息格式、状态码等知识点。
一般一个HTTP协议包括:起始行(start line)、首部(header)、主体(body)三个部分。
[响应消息格式]
HTTP/1.1 200 0K
Connectlon:close
Date: Thu, 13 Oct 2005 03:17:33 GMT
Server: Apache/2.0.54(Unix)
Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT
Content—Length:682l
Content—Type:text/html
这个响应消息分为3部分:1个起始的状态行(status line),首部、1个包含所请求对象本身的附属体。状态行有3个字段:协议版本字段、状态码字段、原因短语字段。
[请求消息格式]
GET /somedir/page.html HTTP/1.1Host:
mod_rewrite 使用基于正则表达式动态的修改传入请求的URL。它可以将URL映射到文件系统路径,也可以将一个URL映射到另一个URL。它使用了没有限制数量的规则来操纵URL,每条规则可以包括没有限制数量的附加条件。你可以通过多种方式来检测,如,服务器变量、环境变量、HTTP头、时间戳等。
mod_rewrite 操作整个URL路径,包括path-info的部分。一个重写规则可以被设置在http.conf或者.htaccess中。一个重写规则生成的路径可以包括一个请求字符串,或者内部的子程序处理,外部请求的重定向,或者穿透内部代理等。
2)PHP框架中的URI路由机制,与apache重写类似,一般包括通配符和正则两种规则。让用户可以重新定向(remap)URI处理程序.设定你自己的路由规则。
【5】MySQL的索引机制,复合索引的使用原则
(深入浅出MySQL一书中对索引的使用讲的比较细致)
一般都会用书本中的目录来介绍索引机制,包括有些书本会有专门的快速检索附录,就很类似于数据库的索引。
MySQL的索引包括4类:主键索引(primary key)、唯一索引(unique)、常规索引(index)、全文索引(fullindex)。
Show index from table_name;–查看表中的索引
Show status like ‘Handler_read%’ –查看索引的使用情况
复合索引,一般遵循最左前缀原则,如table_a 的 a b c 三列建复合索引
create index ind_table_a on table_a(a,b,c);
那么,只有在条件中用到a,或者a、b,或者a、b、c这样的情况下,才会用到刚建的复合索引。
【6】如何理解OOP
OOP,面向对象编程,包括三个方面,继承性、封装性、多态性,其中最根本的东西就是抽象。
继承性,即扩展性,通过子类对已经存在的父类进行功能扩展。
封装性,要求外部不能随意存取对象的内部数据,即对该类中的具体实现做封装,用户不必知道内部的具体实现,只有知道它是干什么的,怎么用就好了。
多态性,就是类的抽象和接口,同一个类能够处理多种类型对象的能力。
请列举、你能想到的所有的字符串查找算法,并加注释简单说明。
有一个IP地址(192.168.0.1),请写出其32位无符号整数形式。
写出、你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面)
向php传入参数的两种方法。
(mysql)请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别;
error_reporting 等调试函数使用
您是否用过版本控制软件? 如果有您用的版本控制软件的名字是?
posix和perl标准的正则表达式区别;
Safe_mode 打开后哪些地方受限.
您是否用过模板引擎? 如果有您用的模板引擎的名字是?
请介绍Session的原理,大型网站中Session方面应注意什么?
测试php性能和mysql数据库性能的工具,和找出瓶颈的方法。
您写过的PHP框架的特点,主要解决什么问题,与其他框架的不同点。
sort、assort()、和 ksort() 有什么分别?它们分别在什么情况下使用?
reference 跟一个正规的变量有什么分别?如何 pass by reference?在什么情况下我们需要这样做?
你如何替 PHP 的应用程式侦错?
你如何产生一个 myclass 的物件?
你会如何定义一个没有成员函式或特性的类别 myclass?
给你一行文字 $string,你会如何编写一个正规表达式,把 $string 内的 HTML 标签除去?
一、基础题
1. 写出如下程序的输出结果
$str2 = false;
echo $str1==$str2 ? 相等 : 不相等;
$str3 = ;
$str4 = 0;
echo $str3==$str4 ? 相等 : 不相等;
$str5 = 0;
$str6 = 0;
echo $str5===$str6 ? 相等 : 不相等;?>
2. 写出如下程序的输出结果
$a2 = false;
$a3 = 0;
$a4 = ;
$a5 = 0;
$a6 = null;
$a7 = array;
$a8 = array(array());
echo empty($a1) ? true : false;
echo empty($a2) ? true : false;
echo empty($a3) ? true : false;
echo empty($a4) ? true : false;
echo empty($a5) ? true : false;
echo empty($a6) ? true : false;
echo empty($a7) ? true : false;
echo empty($a8) ? true : false;?>
3. 写出如下程序的输出结果
$abc = & $test;
unset($test);
echo $abc;?>
4. 写出如下程序的输出结果
function get_count(){
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();?>
5. 写出如下程序的输出结果
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1;
echo $var2;?>
6. 写出如下程序的输出结果
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);?>
7. 使用五种以上方式获取一个文件的扩展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必须使用PHP自带的处理函数进行处理,方法不能明显重复,可以封装成函数,比如 get_ext1($file_name), get_ext2($file_name)
二、算法题
1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数【答案】
(以下答案不一定是最好的,只是一个简单的参考)
1.常用php面试题及答案
2.php常用面试题及答案
3.PHP面试题汇总
4.优秀php高级工程师面试题及答案
5.百度PHP面试题
6.百度php面试题目
7.腾讯php面试题
8.提问得最多的PHP面试题
9.基础php面试题
1、根据新产品开发进度和任务分配,开发相应的软件模块;
2、根据公司技术文档规范编写相应的技术文档;
3、根据需要不断修改完善软件;
4、完成程序测试;
5、研究项目技术细节,编写相应的说明书。
任职要求:
1、熟悉perl、php、javascipt等其中一技术体系;
2、精通正则表达式
3、熟练掌握SQL语法, 熟练使用Sybase、Oracle、SQL Server、MYSQL等主流数据库、相关技术及工具。
4、精通编程工具;
5、熟悉Web开发技术;
6、具备编码和撰写文档的能力;
7、熟悉软件开发流程、设计模式、体系结构;
8、独立解决技术问题,有较强的创新意识;
9、熟悉版本管理,熟悉SVN版本管理工具
10、有良好的英语读写水平。
1、负责公司网站及网络应用产品开发和维护;
2、根据产品需求完成架构和模块设计、编码、测试工作;
3、按照项目计划,遵循公司软件开发流程按时提交高质量代码,完成开发任务;
4、项目,软件开发设计文档的编写、维护,以及其他与项目相关工作;
5、与产品、项目经理、测试部门沟通保证产品的质量和开发进度;
6、参与产品、项目设计方案评审,并提出问题和改进意见。
职位要求:
1、计算机及相关专业,学历本科以上;
2、3年以上PHP/Web开发经验,至少有3个完整项目的开发经验;
3、熟悉Linux,MySQL,熟悉B/S系统前后端相关开发技术及框架;
4、英语读写流利,能在工作环境中熟练运用,听说流利的优先;
5、熟悉Html/CSS/Div布局,熟练使用JQuery,JavaScript,XML,AJAX ;
6、具有独立分析、解决问题的能力,具有良好的编码习惯;
1、根据开发进度和任务分配,完成相应模块的开发、编程任务;
2、参与维护并不断发现和改进存在的问题、不断提升系统性能;
3、积极参与产品、功能与技术架构的改进、参与技术规范的实施。
任职要求:
1.、1-3年以上PHP开发经验,热爱软件开发工作;
2、精通PHP语言,熟悉常用主流框架Laravel、thinkphp等;
3、熟悉MVC开发模式,深入了解php的性能和安全,能独立完成模块设计和开发;
4、精通MySQL数据库,熟悉数据库设计和性能优化;
5、熟练使用linux系统,熟悉nginx等web服务器的配置和优化。
1、负责项目相关模块功能的开发;
2、维护及优化线上系统性能,提升其稳定性;
3、及时响应并解决系统突发问题。
任职要求:
1、大专及以上学历,2年以上PHP为主的中大型互联网产品软件的开发及维护工作经验;
2、熟练掌握Laravel、Thinkphp 框架使用开发;
3、熟悉Linux的基本使用;
4、熟悉Mysql数据库,熟悉redis、memcached使用及应用场景;
5、熟悉http协议、html/xhtml、javascript等前端技术栈;
1、负责游戏接入平台以及数据统计后台前后端相关功能开发;
2、分析运营需求讨论设计方案并最终落实技术方案。
3、参与平台设计和性能调优与维护。
4、负责产品平台核心业务的开发,包括后台系统、游戏对接、充值系统、SDK渠道整合、广告平台等;
岗位要求:
1、 1年或以上PHP+MySQL+Apache/Nginx项目经验;
2、熟悉php面向对象设计方法和laravel框架,熟悉掌握MVC三层设计模式;
3、熟悉laravel 框架,能独立开发,调试项目功能模块,用过laravel-admin后台框架者优先考虑;
4、熟练使用 MySQL,有使用 Memcache / Redis 等互联网应用的使用经验 ;
5、熟悉各类主流数据库如mysql,mongodb等,重点掌握mysql数据库,能够独立建库建表,考虑合理全面,熟悉掌握composer的运用;
1、负责平台PHP开发工作;
2、团队协作与分工,按时完成每周进度要求;
3、根据数据接口文档开发接口,与前端进行数据交互。
4、负责微信小程序项目开发
任职资格:
1、精通PHP开发语言,1年PHP经验
2、熟练掌握HTML、熟悉DIV+CSS布局,熟悉Ajax,熟练掌握jquery;
3、具有MySql索引、查询、存储优化;PHP缓存技术、静态化方面的经验;
4、对编程充满热情,爱捣鼓程序,有代码洁癖,乐于了解和掌握新鲜知识;
5、对前后端合作开发有一定的认知,对交互体验有较为深入的了解;
6、具备OOP编程思想,熟悉MVC,有项目案例,有Laravel开发框架经验者优先;
7、对互联网产品熟悉,关注用户体验,对用户体验有自己的独到见解。
2、负责公司项目技术调研,技术选型,程序开发和维护工作
3、参与项目相关技术文档编写工作;
4、负责项目的定期维护和完善,保障其稳定可靠运行。
任职要求:
1、 具有3-5年的Web开发经验,精通PHP,至少熟悉一种php主流框架,如ThinkPHP5.0, Laravel, Yii;
2、精通JSON、AJAX技术和模板技术,熟悉css+div页面设计,熟悉javascript脚本编写,熟练使用Jquery;
3、 熟悉Redis、Memcached等缓存技术,熟悉RESTful API设计;
4、熟悉LNMP或LAMP服务器架构,有能力在linux服务器配置项目生产环境,线上发布项目程序,排查错误,解决问题;
5、熟练使用svn、git等项目版本管理工具;
6、具有大型互联网站、百万级高并发访问web项目经验者优先;
7、具备系统分析、设计及项目管理能力;
【php开发工程师面试题】推荐阅读:
php高级开发工程师应聘题11-02
php开发工程师简历07-08
开发工程师年终总结09-21
java开发工程师10-12
java开发工程师笔试07-01
模具开发工程师岗位职责10-29
工程开发手续流程10-24
Java开发工程师的基本职责07-02
产品开发工程师的具体职责09-30
高级软件开发工程师岗位职责07-03