1.请自我介绍一下?
答:我叫xxx,来自北京,20xx年毕业于xx大学打算机xx系,毕业后在武汉从事了x年的php开拓事情,公司是一个外包公司,紧张做微信开拓,"大众年夜众号推广,商城,论坛的开拓
2.你在公司卖力那些项目?

答:由于我们公司是一个外包公司,不可能只做一个项目,公司的项目都是交叉进行的,论坛,微信,商城我都做过?
3.你为什么来深圳?
答:由于我哥在这边,父母也希望兄弟间有个照料,而且深圳是一线城市,技能也比广西前沿一些
4.武汉利用什么前端框架和后端框架?
答:根据自己的区域回答
5.你做过那些模块?
答:上岸注册,商品管理,购物车模块,订单管理
6.你们公司是利用什么框架?
答:我们公司采取的是TP框架,利用的mysql+apache+php进行开拓,由于TP框架是一个免费开源的,轻量级的php开拓框架,而且是我们中国人自己开拓的,也是海内用的比较多的,各种资料也比较完好
7.mvc是什么?相互间有什么关系?
答:mvc是一种开拓模式,紧张分为三部分:m(model),也便是模型,卖力数据的操作;v(view),也便是视图,卖力前后台的显示;c(controller),也便是掌握器,卖力业务逻辑
客户端要求项目的掌握器,如果实行过程中须要用到数据,掌握器就会到模型中获取数据,再将获取到的数据通过视图显示出来
8.oop是什么?
答:oop是面向工具编程,面向工具编程是一种打算机编程架构,OOP 的一条基本原则是打算机程序是由单个能够起到子程序浸染的单元或工具组合而成。
1
OOP具有三大特点
1、封装性:也称为信息隐蔽,便是将一个类的利用和实现分开,只保留部分接口和方法与外部联系,或者说只公开了一些供开拓职员利用的方法。于是开拓职员只 须要关注这个类如何利用,而不用去关心其详细的实现过程,这样就能实现MVC分工互助,也能有效避免程序间相互依赖,实当代码模块间松藕合。
2、继续性:便是子类自动继续其父级类中的属性和方法,并可以添加新的属性和方法或者对部分属性和方法进行重写。继续增加了代码的可重用性。PHP只支持单继续,也便是说一个子类只能有一个父类。
3、多态性:子类继续了来自父级类中的属性和方法,并对个中部分方法进行重写。于是多个子类中虽然都具有同一个方法,但是这些子类实例化的工具调用这些相同的方法后却可以得到完备不同的结果,这种技能便是多态性。多态性增强了软件的灵巧性。
1、易掩护
采取面向工具思想设计的构造,可读性高,由于继续的存在,纵然改变需求,那么掩护也只是在局部模块,以是掩护起来是非常方便和较低本钱的。
2、质量高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统知足业务需求并具有较高的质量。
3、效率高
在软件开拓时,根据设计的须要对现实天下的事物进行抽象,产生类。利用这样的方法办理问题,靠近于日常生活和自然的思考办法,势必提高软件开拓的效率和质量。
4、易扩展
由于继续、封装、多态的特性,自然设计出高内聚、低耦合的系统构造,使得系统更灵巧、更随意马虎扩展,而且本钱较低。
9.smarty是什么,有什么浸染?
回答一:smarty是用php写出来的模板引擎,也是目前业界最著名的php模板引擎之一
它分离了逻辑代码和外在的显示,供应了一种易于管理和利用的方法,用来将殽杂的php逻辑代码与html代码进行分离
回答二:smarty是php中最著名的引擎框架之一,我们公司利用的是TP框架,已经封装好了smarty模板,以是没有单独利用过
回答三: smarty是个模板引擎,最显著的地方便是有可以把模板缓存起来。一样平常模板来说,都是做一个静态页面,然后在里面把一些动态的部分用统统分隔符切开,然后在PHP里打开这个模板文件,把分隔符里面的值更换掉,然后输出来,你可以看下PHPLib里面的template部分。
而smarty设定了缓存参数往后,第一次运行时候会把模板打开,在php更换里面值的时候把读取的html和php部分重新天生一个临时的php文件,这样就省去了每次打开都重新读取html了。如果修正了模板,只要重新刷下就行了。
10.TP框架有哪些优点?
答:TP框架是我们中国人自己开拓的框架,各种资料比较完好,海内用的比较多,比较大略和方便,而且是免费开源的
11.TP的特性有哪些?
1.多表查询非常方便,在model中几句代码就可以完成对多表的关联操作2.领悟了smarty模板,使前后台分离3.支持多种缓存技能,尤其对memcache技能支持非常好4.命名规范,模型,视图,掌握器严格遵照命名规则,通过命名逐一对应5.支持多种url模式6.内置ajax返回方法,包括xml,json,html等7.支持运用扩展,类库扩展,驱动扩展等
12.TP框架中的大字母函数?
U:对url的组装A:内部实例化掌握器S:缓存处理R:调用某个掌握器的操作方法D:实例化自定义模型类M:实例化根本模型类I:获取参数L:设置或者获取当前措辞C:设置或获取,保存配置
13.请先容一下laravel框架?
答: laravel框架的设计思想比较前辈,非常适宜运用各种开拓模式,作为一个框架,它为你准备好了统统,composer是php的未来,没有composer,php肯定要走向没落
laravel框架最大的特点和精良之处便是凑集了php比较新的特点,以及各种各样的设计模式,Ioc模式,依赖注入等
14.laravel有那些特点?
回答一:
1.强大的rest router:用大略的回调函数就可以调用,快速绑定controller和router2.artisan:命令行工具,很多手动的事情都自动化3.可继续的模板,简化view的开拓和管理4.blade模板:渲染速率更快5.ORM操作数据库6.migration:管理数据库和版本掌握7.测试功能也很强大8.composer也是亮点
回答二: laravel框架引入了门面,依赖注入,Ioc模式,以及各种各样的设计模式等
15.请简述一下数据库的优化?
答:数据库的优化可以从四个方面来优化:
1.从构造层: web做事器采取负载均衡做事器,mysql做事器采取主从复制,读写分离
2.从储存层: 采取得当的存储引擎,采取三范式
3.从设计层: 采取分区分表,索引,表的字段采取得当的字段属性,适当的采取逆范式,开启mysql缓存
4.sql语句层:结果一样的情形下,采取效率高,速率快节省资源的sql语句实行
16.如何办理非常处理?
答: 抛出非常:利用try…catch,非常的代码放在try代码块内,如果没有触发非常,则代码连续实行,如果非常被触发,就会 抛出一个非常。Catch代码块捕获非常,并创建一个包含非常信息的工具。$e->getMessage(),输出非常的缺点信息。
办理非常:利用set_error_handler函数获取非常(也可以利用try()和catch()函数),然后利用set_exception_handler()函数设置默认的非常处理程序,register_shutdown_function()函数来实行,实行机制是,php要把调入的函数调入到内存,当页面所有的php语句都实行完成时,再调用此函数
17.前端?
答:我在事情中处理前真个功能,一样平常便是用ajax向后台要求数据,然后返回数据在前台页面中显示出来。我从来没有独立的完全的将html和css样式都一个人完成,如果公司实在有这样的需求的话,我可能会找一些前台的模板或者说是前真个框架,比如说h—ui等等
18.权限管理(RBAC)的实现?
1.首先创建一张用户表:id name auto(保存格式为:掌握器-方法)
2.然后在后台中创建一个基类掌握器,掌握器里封装一个布局方法,当用户上岸成功后,利用TP框架中封装好的session函数获取保存在做事器中的session id,然后实例化模型,通过用户id获取保存在数据表中的auth数据,利用explode函数分割获取到的数据,并利用一个数组保存起来,然后利用TP框架中封装好的常量获取当前掌握器和方法,然后把他们组装成字符串,利用in_array函数进行判断该数组中是否含有当前获取到的掌握器和方法,如果没有,就提示该用户没有权限,如果有就进行下一步操作
19.支付功能的实现?
答:
20.怎么担保匆匆销商品不会超卖?
答:这个问题是我们当时开拓时碰着的一个难点,超卖的缘故原由紧张是下的订单的数目和我们要匆匆销的商品的数目不一致导致的,每次总是订单的数比我们的匆匆销商品的数目要多,当时我们的小组谈论了好久,给出了好几个方案来实现:
第一种方案:在每次下订单前我们判断匆匆销商品的数量够不足,不足不许可下订单,变动库存量时加上一个条件,只变动商品库存大于0的商品的库存,当时我们利用ab进行压力测试,当并发超过500,访问量超过2000时,还是会涌现超卖征象。以是被我们否定了。
第二种方案:利用mysql的事务加排他锁来办理,首先我们选择数据库的存储引擎为innoDB,利用的是排他锁实现的,刚开始的时候我们测试了下共享锁,创造还是会涌现超卖的征象。有个问题是,当我们进行高并发测试时,对数据库的性能影响很大,导致数据库的压力很大,终极也被我们否定了。
第三种方案:利用文件锁实现。当用户抢到一件匆匆销商品后先触发文件锁,防止其他用户进入,该用户抢到匆匆销品后再解开文件锁,放其他用户进行操作。这样可以办理超卖的问题,但是会导致文件得I/O开销很大。
末了我们利用了redis的行列步队来实现。将要匆匆销的商品数量以行列步队的办法存入redis中,每当用户抢到一件匆匆销商品则从行列步队中删除一个数据,确保商品不会超卖。这个操作起来很方便,而且效率极高,终极我们采纳这种办法来实现