一、你都作过什么项目?php
答:第一份实习工做接触的项目是CRM 销售管理系统,一款用JSP语言开发的进销存管理系统。第一份正式工做是一款主打高质量图片社交社区网站项目,“美啦周末”(后改型为”聊会儿”)。第二份工做是在一个外包公司工做,项目较多,都是交叉进行,论坛、微信、商城、门户网站都接触作过。html
二、你都作过哪些模块?前端
答:登陆注册,商品管理、购物车模块、订单管理、后台数据统计分析、APP接口编写、SEO简单优化、第3方数据抓取。html5
三、当前国内或本地主要流行的WEB前端框架和后端框架?node
答:mysql
前端框架:Bootstrap、html5-boilerplate、Meteor、Semantic UI、Foundation、Materialize、Vue、Skeleton、Amaze UI、UIkit、Yui、kissy、MUI、Arale、JX、GMU、ZUI、Clouda Touch.js,react.js、angular.js,layUI等;react
国内主要流行的几款:jquery
Bootstrap : 来自 Twitter,是目前最受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷。可跨平台。linux
Clouda:Clouda是基于node.js的Webapp开发框架,在使用Clouda时须要安装node.js
和MongoDB
。laravel
Vue :一套构建用户界面的渐进式框架。
react.js:用于构建用户界面的 JavaScript库。
AngularJS:AngularJS 经过新的属性和表达式扩展了 HTML
后端框架:ThinkPHP(TP)、Laravel、Yii、CodeIgniter(CI)、Zend Framework、CakePHP、Symfony
各类框架的优缺点能够参考:https://blog.csdn.net/weixin_38893715/article/details/80240314
针对的项目不同,通常来讲:
1.小型项目:CodeIngiter
2.中型项目:CakePHP、Zend Framework、Laravel、Thinkphp
3.大型重量级项目:Yii、Symfony、Laravel
四、你以前公司使用框架是什么?
答:YII 和 thinkPHP
五、常见的开发环境,以及如何搭建?(重点在于搭建配置)
答:LAMP/LNMP、WAMP/WNMP
L: linux系统
W:windows系统
A:Apache
M:Mysql
P:PHP
六、PHP常见的模板引擎有哪些?有什么做用?你会哪些?
Smarty
Smarty的特色是将模板编译成PHP脚本,而后执行这些脚本。很快,很是灵活。
Heyes Template Class
一个很是容易使用,但功能强大而且快速的模板引擎,它帮助你把页面布局和设计从代码中分离。
FastTemplate
一个简单的变量插值模板类,它分析你的模板,把变量的值从HTML代码中分离处理。
ShellPage
一个简单易用的类,可让你的整个网站布局基于模板文件,修改模板就能改变整个站点。
STP Simple Template Parser
一个简单、轻量级而且易于使用的模板分析类。它能够从多个模板中组装一个页面,把结果页面输出到浏览器或者文件系统。
OO Template Class
一个你能够用在本身程序中的面向兑现的模板类。
SimpleTemplate
一个能够建立和结构化网站的模板引擎。它能够解析和编译模板。
bTemplate
短小可是快速的模板类,容许你把PHP逻辑代码从HTML修饰代码中分离。
Savant
一个强大且轻量级的PEAR兼容模板系统。它是非编译型的,使用PHP语言自己作为它的模板语言。
ETS - easy template system
可使用彻底相同数据重组模板的模板系统。
EasyTemplatePHP
适用于你的站点的一个简单可是强大的模板系统。
vlibTemplate
一个快速、全能的模板系统,它包含一个缓存和调试类。
AvanTemplate
多字节安全的模板引擎,占用不多系统资源。它支持变量替换,内容块能够设置显示或隐藏。
Grafx Software’s Fast Template
一个修改版本的Fast Template系统,它包括缓存功能,调试控制台以及沉默去除为赋值块。
TemplatePower
一个快速、简单、功能强大的模板类。主要功能有嵌套的动态块支持,块/文件包含支持以及显示/隐藏未赋值的变量。
TagTemplate
这个库的功能被设计来使用模板文件,同时容许你从HTML文件检索信息。
htmltmpl: templating engine
一个适用于Python和PHP的模板引擎。它面向但愿在项目中分离代码和设计的web应用开发人员。
PHP Class for Parsing Dreamweaver templates
一个分析Dreamweaver模板的简单类,被用于Gallery 2 和WordPress的自定义模块中。
MiniTemplator (Template Engine)
针对HTML文件的一个紧凑型模板引擎。对于模板变量和块定义它具备简单的语法。其中块能够嵌套。
Layout Solution
简化网站开发和维护。它拥有经常使用的变量和页面元素使你不须要重复作页面布局工做。
Cached Fast Template
它已经归入FastTemplate,容许你缓存模板文件,甚至能够在分离的块内容上缓存不一样的规格。
TinyButStrong
一个支持MySQL, Odbc, Sql-Server和ADODB的模板引
擎。它包含7个方法和两个属性。
Brian
Lozier’s php based template engine
只有2K大小,很是快而且是面向对象设计。
WACT
一个从设计中分离代码的模板引擎。
PHPTAL
一个PHP下面的XML/XHTML模板库。
在以前的工做经常使用到是smarty模板引擎
smarty 是用 php 写出来的模板引擎,也是目前业界最著名的 php 模板引擎之一。它分离了逻辑代码和外在的显示,提供了一种易于管理和使用的方法,用来将混杂的 php 逻辑代码与 html 代码进行分离。
以前公司使用的是 TP 框架,已经封装好了 smarty 模板,因此没有单独使用过 。
smarty 是个模板引擎,最显著的地方就是有能够把模板缓存起来。通常模板来讲,都是作一个静态页面,而后在里面把一些动态的部分用一切分隔符切开,而后在 PHP 里打开这个模板文件,把分隔符里面的值替换掉,而后输出来。 而 smarty 设定了缓存参数之后,第一次运行时候会把模板打开,在 php 替换里面值的时候把读取的 html 和 php 部分从新生成一个临时的 php 文件,这样就省去了每次打开都从新读取 html 了。若是修改了模板,只要从新刷下就好了。
七、面向对象(OOP)是什么?(重点)
答:oop 是面向对象编程,面向对象编程是一种计算机编程架构,OOP 的一条基本原则是计算机程序是由单个可以起到子程序做用的单元或对象组合而成。
OOP 具备三大特色
一、封装性:也称为信息隐藏,就是将一个类的使用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开发人员使用的方法。因而开发人员只 须要关注这个类如何使用,而不用去关心其具体的实现过程,这样就能实现 MVC 分工合做,也能有效避免程序间相互依赖,实现代码模块间松藕合。
二、继承性:就是子类自动继承其父级类中的属性和方法,并能够添加新的属性和方法或者对部分属性和方法进行重写。继承增长了代码的可重用性。PHP 只支持单继承,也就是说一个子类只能有一个父类。
三、多态性:子类继承了来自父级类中的属性和方法,并对其中部分方法进行重写。因而多个子类中虽然都具备同一个方法,可是这些子类实例化的对象调用这些相同的方法后却能够得到彻底不一样的结果,这种技术就是多态性。多态性加强了软件的灵活性。
oop的优势:
一、易维护 采用面向对象思想设计的结构,可读性高,因为继承的存在,即便改变需求,那么维护也只是在局部模块,因此维护起来是很是方便和较低成本的。
二、质量高 在设计时,可重用现有的,在之前的项目的领域中已被测试过的类使系统知足业务需求并具备较高的质量。
三、效率高 在软件开发时,根据设计的须要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于平常生活和天然的思考方式,势必提升软件开发的效率和质量。
四、易扩展 因为继承、封装、多态的特性,天然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,并且成本较低。
八、MVC是什么?以及相互之间的关系?
答:mvc 是一种开发模式,主要分为三部分:M(model),也就是模型,负责数据的操做;
V(view),也就是视图,负责先后台的显示;
C(controller),也就是控制器,负责业务逻辑 客户端请求项目的控制器。
关系:若是执行过程当中须要用到数据,控制器就会到模型中获取数据,再将获取到的数据经过视图显示出来。
九、TP框架有哪些优势?
答:TP 框架是咱们中国人本身开发的框架,各类资料比较齐全,国内用的比较多,比较简单和方便,并且是免费开源的。
十、TP框架的特性有哪些?
答: 1.多表查询很是方便,在 model 中几句代码就能够完成对多表的关联操做;
2.融合了 smarty 模板,使先后台分离;
3.支持多种缓存技术,尤为对 memcache 技术支持很是好;
4.命名规范,模型,视图,控制器严格遵循命名规则,经过命名一一对应;
5.支持多种 url 模式;
6.内置 ajax 返回方法,包括 xml,json,html 等;
7.支持应用扩展,类库扩展,驱动扩展等。
十一、TP框架中的大写字母函数各表示什么意思?
答: U:对 url 的组装 ;
A:内部实例化控制器;
S:缓存处理;
R:调用某个控制器的操做方法;
D:实例化自定义模型类;
M:实例化基础模型类;
I:获取参数;
L:设置或者获取当前语言;
C:设置或获取,保存配置。
十二、请介绍下Laravel 框架?
答: laravel 框架的设计思想比较先进,很是适合应用各类开发模式,做为一个框架,它为你准备好了一切,composer 是 php 的将来, laravel 框架最大的特色和优秀之处就是集合了 php 比较新的特色,以及各类各样的设计模式,Ioc 模式,依赖注入等。
1三、Laravel 框架有哪些特色?
答:1.强大的 REST router:用简单的回调函数就能够调用,快速绑定 controller 和 router ;
2.artisan:命令行工具,不少手动的工做都自动化;
3.可继承的模板,简化 view 的开发和管理;
4.blade 模板:渲染速度更快;
5.ORM 操做数据库;
6.migration:管理数据库和版本控制;
7.测试功能也很强大;
8.支持composer包管理工具;
9.laravel 框架引入了门面,依赖注入,Ioc 模式,以及各类各样的设计模式等。
1四、谈谈对 RESTful Web 服务的认识?(重点 RESTful API )
参考资料:http://www.runoob.com/w3cnote/restful-architecture.html
答:REST全称是Representational State Transfer,中文意思是表述(编者注:一般译为表征)性状态转移。
通俗的理解:
URI定位资源,用HTTP动词(GET,POST,PUT,DELETE)描述操做。
Resource:资源,即数据。
Representational:某种表现形式,好比用JSON,XML,JPEG等;
State Transfer:状态变化。经过HTTP动词实现。
1五、简述一下数据库的优化?
答:数据库的优化能够从四个方面来优化:
1.从结构层: web 服务器采用负载均衡服务器,mysql 服务器采用主从复制,读写分离
2.从储存层: 采用合适的存储引擎,采用三范式
3.从设计层: 采用分区分表,索引,表字段合适的字段属性,适当采用逆范式,开启 mysql 缓存
4.sql 语句层:结果同样的状况下,采用效率高,速度快节省资源的 sql 语句执行。
1六、如何解决异常处理?
答:抛出异常:使用 try...catch,异常的代码放在 try 代码块内,若是没有触发异常,则代码继续执行,若是异常被触发,就会抛出一个异常。Catch 代码块捕获异常,并建立一个包含异常信息的对象。$e->getMessage(),输出异常的错误信息。
解决异常:使用 set_error_handler 函数获取异常(也可使用 try()和 catch()函数),而后使用 set_exception_handler()函数设置默认的异常处理程序,register_shutdown_function()函数来执行,执行机制是,php 要把调入的函数调入到内存,当页面全部的 php 语句都执行完成时,再调用此函数。
1七、前端 HTML、JS(jQuery)、CSS 能力如何?
重点在于标签语义化和jQuery的掌握,HTM五、CSS3 特性和多浏览器直接的兼容处理
1八、前端经常使用的插件有哪些?
答:jquery、touch.js、swiper.js、bootstop、Masonry (瀑布流)等
更多插件能够去jQuery插件库 http://www.jq22.com/ 查找
1九、权限管理(RBAC)的实现?
答: 1.首先建立一张用户表:id name auto(保存格式为:控制器-方法)
2.而后在后台中建立一个基类控制器,控制器里封装一个构造方法,当用户登录成功后,使用 TP 框架中封装好的 session 函数获取保存在服务器中的 session id,而后实例化模型,经过用户 id 获取保存在数据表中的 auth 数据,使用 explode 函数分割获取到的数据,并使用一个数组保存起来,而后使用 TP 框架中封装好的常量获取当前控制器和方法,而后把他们组装成字符串,使用 in_array 函数进行判断该数组中是否含有当前获取到的控制器和方法,若是没有,就提示该用户没有权限,若是有就进行下一步操做