php程序员面试

2024-04-17

php程序员面试(精选7篇)

篇1:php程序员面试

北京融入网络科技有限公司

PHP工程师面试题

1、请写一个实现中文字串截取无乱码的方法。(超出部分用’…..’替换)。

2、ThinkPHP框架中,下列定义有什么不同?

$userModel = M(“User”);

$userMode l= D(“User”);

3、如果让你模拟登陆微信公众平台并设置微信的开发模式中的URL和Token,你会如何去做?(思路或代码皆可)。

4、谈谈对你对PHP的认识或你擅长的技术。

5、假设有一个博客系统,数据库存储采用mysql,用户数量为1000万,预计文章总数为10亿,每天有至少10万的更新量,每天访问量为5000万,对数据库的读写操作的比例超过10:1,你如何设计该系统,以确保其系统高效,稳定的运行?

提示:可以从数据库设计,系统框架,及网络架构方面进行描述,可以自由发挥。

6、你经常去那些网站?有没有自己的博客或git 开源项目。

/ 1

篇2:php程序员面试

请列举、你能想到的所有的字符串查找算法,并加注释简单说明。

有一个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 标签除去?

篇3:基于MVC模式的PHP程序开发

PHP, 是英文超文本预处理语言Hypertext Preprocessor的缩写。PHP是一种HTML内嵌式的语言, 是一种在服务器端执行的嵌入HTML文档的脚本语言, 语言的风格有类似于C语言, 被广泛地运用。PHP语言有以下特点:

1) 支持的数据库非常广泛, SQL Server, Oracle, My SQL, DB2, Access等。在实际应用中, 跟PHP搭配最合适的还当属My SQL。

2) 跨平台性非常好, 支持Windows系列操作系统, LINUX操作系统和UNIX操作系统。通常最顶点的应用时在LINUX操作系统中。

3) 支持多种Web服务器。微软的IIS, Apache等, 通常应用Apache服务器。

4) 免费开源软件。同时与Linux、Apache、My SQL构成性价比最高的Web系统, 即我们通常所说的LAMP系统开发方式。

5) PHP5.0有成熟的面向对象体系, 能够适应基本的面向对象要求, 完全可以用来开发大型商业程序。

2 Smarty模板技术

尽管PHP功能很强大, 但是由于PHP是属于一种HTML内嵌式语言, 在开发过程中, 很多程序员将HTML代码与PHP代码混合写在同一页面, PHP体现的还是面向过程的方式。为了真正实现PHP面向对象的功能, 我们可以利用模板技术, 将HTML代码与PHP后台程序相分离。通过HTML实现前台页面的显示, PHP负责后台处理。

Smarty模版的引入很好的解决了这一问题, Smarty就是一个小小的解析器。它可以为我们提供一个通用的模板来实现表现层, 不用将显示上的逻辑判断送到PHP的逻辑层中进行, 也不用为了实现代码的分离而因一个小小的显示上的改变重新建一个模板。程序员所做的仅仅是提取、组织、处理好需要的数据, 然后通过Smarty Assign到模板, 这些数据怎样显示, 显示多少, 完全交由显示逻辑处理。这样, 程序代码和HTML代码就可以更彻底的分离, 不仅简化了工作复杂度, 也更有利于分工协作。

3 MVC模式

3.1 MVC模式简介

MVC是“Model-View-Controller”的缩写, 即“模型-视图-控制器”。M是指数据模型, V是指用户界面, C则是控制器。使用MVC的目的是将M和V的实现代码分离, 从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步, 一旦M改变, V应该同步更新。模型-视图-控制器 (MVC) 是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式, 至今已被广泛使用。

3.2 MVC模式的设计思路

MVC把一个应用的输入、处理、输出流程按照Model, View, Controller的方式进行分离, 这样一个应用层被分为三个层:模型层, 视图层、控制层。

视图 (View) 表示用户层。这一层的主要任务是将页面呈现给用户, 随着应用的复杂性和规模性的提高, 界面的处理也变得具有挑战性。良好的视图界面是一个网站必须具备的条件。一个应用可能有很多不同的视图, MVC设计模式对于视图的处理仅限于视图上数据的采集和处理, 以及用户的请求, 而不包括在视图上的业务流程的处理。业务流程的处理交予模型 (Model) 处理。比如一个订单的视图只接受来自模型的数据并显示给用户, 以及将用户界面的输入数据和请求传递给Controller和Model。

模型 (Model) 就是业务流程和状态的处理以及业务规则的制定。业务流程的处理过程对其他层来说暗箱操作, 模型接受视图请求的数据, 并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。对一个开者来说, 就可以专注于业务模型的设计。MVC设计模型告诉我们, 把应用的模型按照一定的规划抽取出来, 抽取的层次很重要, 这也是判断开发人员是否优秀的设计依据。MVC并没有提供模型的设计方法, 而只告诉你应该组织管理这些模型, 以便于模型的重构和提高重用性。可以用Object Oriented编程来作比喻, MVC定义了一个顶级类, 告诉它的子类只能做这些, 但没法限制你能做这些, 这点对实际应用很重要。

业务模型还有一个很重要的模型那就是数据模型。数据模型主要是指实体对象的数据保存。比如将一张订单保存到数据库中, 从数据库获取订单。我们可以将这个模型单独列出, 所有有关的数据库的操作只限在该模型中。

控制 (Controller) 可以理解为从用户接受请求, 将模型与视图匹配在一起, 共同完成用户的请求, 划分控制层的作用很明显, 它清楚地告诉开发者, 它仅是一个分发器, 选择什么样的模型, 选择什么样的视图, 可以完成什么样的用户请求。控制层不作任何的数据处理。因此, 一个模型可能对应多个视图, 一个视图可能对应多个模型。

总之, 模型、视图与控制器的分离, 使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据, 所有其他依赖于这些数据的视图都反映到这些变化。因此, 无论何时发生了何种数据变化, 控制器都会将变化通知所有的视图, 导致显示的更新。这实际上是一种模型的变化—传播机制。模型、视图、控制器三者之间的关系和各自的主要功能。

4 当前流行的基于MVC的PHP框架

4.1 Think PHP框架。Think PHP是一个免费开源的, 快速、简单的面向对象的国产轻量级PHP开发框架

Think PHP遵循Apache 2开源协议发布, 是为了敏捷WEB应用开发和简化企业级应用开发而诞生的, 具有免费开源、快速简单及面向对象等众多的优秀功能和特性。Think PHP经历了五年多发展的同时, 在社区团队的积极参与下, 在易用性、扩展性和性能方面不断优化和改进, 众多的典型案例确保可以稳定用于商业以及门户级的开发。

4.2 Bro PHP框架

Bro PHP是一个免费开源的轻量级PHP框架, 允许你把基于Bro PHP框架开发的应用去开源或是商业产品发布或销售。Bro PHP框架完全采用面向对象的设计思想, 并且是基于MVC的三层设计模式。具有部署和应用及为简单、效率高、速度快, 扩展性和可维护性都很好等特点, 可以稳定的用于商业及门户的开发。 (单服务器的PHP项目大约当前所有网站数量的80%, 都可以使用Bro PHP框架开发) Bro PHP框架包括单入口文件、MVC模式、目录组织结构、类自动加载、强大基础类、URL处理、输入处理、错误处理、缓存机制、扩展类等功能。是专门为《细说PHP》的读者及LAMP兄弟连全体学员提供的“学习型PHP框架”。当然任何PHP应用开发爱好者都可以从Bro PHP框架的简单和快速的特性中受益。另外, Bro PHP框架的应用不仅使Web开发变得更简单、更快捷, 最主要的目的是让PHP学习者, 通过使用本框架从而去了解PHP框架、再去研究框架, 最后达到开发自己框架的目的。S

篇4:腾讯php程序员面试题目

说在前面:

1、以下题目,除了编程任务外其他都需要写在给你提供的草纸上。纸张是珍贵的地球资源,请节约使用。编程任务在有相应的环境时,会要求上机书写,实在没有条件,就只能写在草纸上了。2、时间:

基础任务+进阶任务+设计任务 = 90分钟 编程任务 = 60分钟 基础任务:

1、请列举你能想到的UNIX信号,并说明信号用途。

2、请列举、你能想到的所有的字符串查找算法,并加注释简单说明。3、有一个IP地址(192.168.0.1),请写出其32位无符号整数形式。

4、写出、你能想到的所有HTTP返回状态值,并说明用途(比如:返回404表示找不到页面)

基础任务-选作(会得到额外分数):

1、画几个你最熟悉的SERVER端模型出来(格式不重要,尽量将图画清楚,说明思路即可)进阶任务:

1、PHP的垃圾收集机制是怎样的?

说明:

1)如果,你熟悉PHP源码,那么请从源码入手,回答些问题,会获得额外加分

2)如果,你不熟悉PHP源码,那么尽你所能,多写点东西,包括利用自己的编程直觉得到的信息,都可以。

3)对,则有分,错误不扣,不写无分。2、请写出HTTP头,并符合以下要求:

1)这是一个post请求

2)目标:http://:8080/test

3)POST变量:

username: test

pwd: test2

intro: Hello world!

4)包含以下COOKIE信息:

cur_query: you&me

说明:

1)如果,你记不得某个HTTP协议中的指令字了,那么,无奈这举是用“汉字”代替。

2)如果,你能记住更多的HTTP协议指令字,那么多写几句,总是没坏处,对吧?

3)最关键的,只需要画出正确的“轮廓”(还记得httpwatch等工具打印出来的头部吗?那就是“轮廓”的含义),也会有分数,但如果,连“轮廓”都写错了,那么就很遗憾了。设计任务:

1、最近总有人骚扰我们的投票模块,需要你来设计一个投票限制的东东

要求如下:

1)要求每个QQ号码(假设此QQ号码在UNIT32内可以表示)10分钟这内只能投5票。

2)我们的用户很踊跃,平均每天要有2000万人左右通过此程序投票。

说明:

1)无需写代码,只需要图跟文字即可。

2)对于关键逻辑,请用图加代码表示出来,这也是对你文字表达能力的一个考验。

3)对你能想到的所有的边界条件列出来,这是对你逻辑思维全面与敏捷性的考验。

4)存储部分,尽你所能吧。如果,你需要一个自己设计的存储层,那么把这个存储层的实现,用文字+图片方式描述清楚,要是设计合理,你会获得华丽的奖分。编程任务:

1、我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧。

要求如下:

1)/myworks/example/bbe.txt,98版本英文圣经一本

2)输入部分要求如下:php./example.php [单词]

3)输出部分如下:[单词] 1,2 2,4 5,6 表示:此单词在1行2列(第二个单词),2行4列...说明:

1)此文本4MB之巨...2)单词的含义:由英文字母(大小写),数字(0-9)组成的串

3)提供给你的机器OS为ubuntu 9.10,内存只有1G,而且,很不幸的,其中700M用来做了别的

4)上机考试不允许上网,但我装了man文档以及读取CHM以及PDF的阅读器,在电脑的桌面的CHM文件夹中,有相应的PHP参考手册

5)算法复杂度要求不能大于O(N^2)(就是N的平方)

篇5:php程序员面试自我介绍技巧

一、应该介绍自己掌握的开发一种,主要介绍php语言的独特语法以及如何使用,比如PHP语言会比CGI更快的执行动态页面。

二、必须熟悉Oracle、Mysql等数据库,并能简单的介绍自己掌握的程度。由于php做出的动态页面比用其他语言做出来的页面在执行效率以及CGI方面高得多,所以你还需要在面试中说出自己的文档撰写能力很强。

三、PHP程序员应该具备独立分析和解决问题的能力,可以在自我介绍中讲讲自己曾经遇到过的问题是如何解决的。让面试官看到你的能力,这将会直接影响到你自我介绍的成功与否。

四、一个PHP程序员必须有良好的职业道德和工作态度,所以在面试中应该尽量讲自己在做项目时的认真态度以及今后的工作规划,表现出自己的进取心。

五、还有关于沟通能力和理解能力的体现,这个在与HR的交谈中就可以表现出来,所以需要做的工作就是从容的有条理的把自我介绍说完,回答每一个问题时都应该简洁明了,关于自我介绍可以提前做个草稿,背一下。

六、团队合作能力也是企业非常看重的,在培训中老师一般都会带领大家做项目,大的项目一般会分小组,每个人都有相对应的任务,这就模拟了公司中的团队合作,在自我介绍过程中要把做项目的具体流程以及相互协作的过程说出来,让HR看到自己具备团队合作的能力。

七、最后就是执行力,每当任务分配下来的时候该如何执行,还有自己讲过职业规划后该如何执行,还有在学习的过程中是如何人字形的,遇到困难又是如何执行的,这些都可以体现出php程序员的执行力,回答的时候抓住发现及时寻找原因,快速展开行动的这个主线即可。

篇6:趣果科技PHP程序员转正面试题

1.echo count(“abc”);输出什么?

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

3.error_reporting(2047)什么作用?

4.echo,print()和print_r()有什么区别?

5.打开php.ini中的Safe_mode,会影响哪些函数?

6.请写一个函数验证电子邮件的格式是否正确(要求使用正则)

7.MySQL数据库,一天一万条以上的增量,怎么优化?

8.写出一种排序算法(要写出代码),并说出优化它的方法。

假设我们需要做一个用户金币系统。用户每天第一次登录可以获得1个金币,用户下单购买东西后会获得20个金币。但是这两种金币有不同的性质。对于登录获得的金币(简记为类型A),用户获得之后就可以消费——例如可以用金币买东西。对于下单购买获得的金币(简记为类型B),有一个月的冻结期。在冻结期内类型B的金币不能被消费,如果冻结期内用户发生了退货,则这些类型B的金币会被回收,将来也不让给用户消费。

请设计一个系统(数据库结构和逻辑流程),满足以下要求:

1、用户可以正确的获得上述类型金币

2、用户随时可以知道自己有多少金币可以消费,有多少金币被冻结

3、被冻结的金币在冻结期后成为可以消费的金币

4、用户可以消费自己的可用的金币

篇7:php程序员面试

关键词:项目课程,PHP程序设计,项目教学,高职

当前,为了提高高职高专课堂教学的质量,进一步深化职业教育的教学改革,我院在“双三元”办学理念的指引下,进行了一系列的教学改革。其中最重要的是为了加强学生的实训,把教学周分成了前八周,后八周,其中第九周和第十八周为专门的实训周,专业可自行设置相应的核心课程由学生完成实训项目。同时,学校大力加强对教师的教育教学改革的培训,专门组织了针对全校教职工的“行动导向”培训班,开办了几期。同时,还邀请姜大源教授到学校作报告。一系列的培训给教职员工带来了强烈的思想和心理冲击,也为我校的职业教育改革指明了方向。

为了贯彻“以学生为中心”的职业教育改革方向,通过不断的教育教学实践探索,同时结合IT类课程的特点,特别是程序设计类课程的特点,这一类的课程采用项目教学法无疑是行之有效的教学方法。项目教学法就是在老师的指导下,将一个相对独立的项目交由学生自己处理,信息的收集、方案的设计、项目实施及最终评价,都由学生自己负责,学生通过该项目的进行,了解并把握整个过程及每一个环节中的基本要求。职业教育项目课程是一种以工作任务为中心选择、组织课程内容,并以完成工作任务为主要学习方式的课程模式。以下我就详细介绍基于PHP程序设计课程的项目课程的开发过程。

1 PHP程序设计课程介绍

本课程是我校计算机应用专业的一门专业核心课程,也是一门实践性很强的课程。课程主要讲解PHP的相关知识及PHP在WEB应用程序开发中的实际应用,通过具体案例,使学生巩固数据库、网页制作等专业知识,更好地进行开发实践。该课程选定当前流行的应用网站开发为职业方向,以实用的应用网站系统开发的实际工作过程为导向,通过一些典型的设计任务,让学生掌握PHP基本语法,使用开源系统快速搭建、修改实用的网站。本课程的预备课程是《网页设计与制作》、《DIV+CSS》等,该课程也是《PHP项目实训》的预备课程。该课程在本专业课程中的地位如图所示:

2 PHP程序设计采用项目教学法的可行性分析

PHP程序设计在语法上与C语言很类似,我校计算机专业的学生进校第一学期就开设了C语言,相对基础比较扎实,同时,在学习PHP程序设计之前学生已经学习了DIV+CSS网页设计,JAVASCRIPT程序设计等相关课程,这些都为我们后面开展项目教学打下了基础。

同时,实施项目教学也是我们提高学生的学习兴趣必然要求。高职高专的学生普遍存在学习基础差,学习自主性不强,上课容易走神。所以我们采用项目教学法,通过实用的项目首先吸引他们的眼球,以此来提高他们的兴趣,后面讲解起来就会更加轻松。

3 项目的选择

通过以上九个项目的实训,从简单到复杂,通过这样的层层深入,学生对PHP项目的开发有了深入的了解,对其中牵涉的知识点也能够通过项目的更好的理解。其中项目一主要让学生熟悉表单元素,项目二主要让学生熟练使用流程控制语句,项目三主要是了解数组,项目四主要是讲解文件上传知识点,项目五讲解数据库连接。通过这五个项目的讲解,我们就可以进入到一个小型完整项目的开发了。

以项目六新闻发布系统为例,我们首先完成的是新闻的发布,那就牵涉我们前面学习的项目一制作表单,项目四文件上传,还有项目五数据库操作。接下来是新闻的浏览,修改和删除。然后是做评论的增、删、改、查。这其中讲解一个知识点就是分页,后面再讲解session、cookies,进一步完善登录功能。同时,为了让学生更好地了解对数据库的操作,我布置了增加新闻的类型,新闻的分类显示,热门新闻排行榜三个小程序项目让学生完成。在实训周,学生主要是完成项目9 京东商城项目,同时自己制作一个项目就是项目八主要是学生管理系统和人事管理系统二选一。

同时,为了让学生以后更好地适应公司开发的要求,提高学生的IT职业素养,在学生的项目实践过程中,我们尽量以公司的编程规范去要求每个学生,比如代码的缩进,“{}”的对齐等一些问题。为了让同学以后能够适应大型项目的开发,在项目中特别强调了注释和文档的编写,一定要为代码添加注释,增强代码的可读性和可维护性,尽管目前我们的代码还不长,但要让他们养成良好的习惯。对于文档的编写和阅读,对于他们可能跟写代码一样难,但也一定要坚持编写。一个大型项目的开发往往必须要依靠团队的力量,所以一个程序员一定要学会交流,交流一方面是要学会写各种文档,另一个方面则是要锤炼自己的性格。通过这些方面的努力,学生项目开发的能力大大增强,IT职业素养也得到很大提高。

4 课程考核方式

1)成绩确定

总成绩=平时成绩+课堂项目实践+项目演示+其他

2)成绩比例

作为老师,对于每一个项目,我都有详细记录学生的完成情况,包括记录前三名做出来的同学,给予每个同学相应的加分。同时,对于同学做出来的程序,我选择其中有代表性的程序,在课堂上讲解,或由学生进行讲解。最后我根据同学在每一个项目中的表现,以及侧重在最后的自主项目实践开发汇报情况,给每一个同学给出了这门课程的成绩。

5 结束语

上一篇:威县公司一流动态考核整改报告下一篇:飞跃游泳协会简介