当前位置: 首页 > 后端技术 > PHP

一个16年毕业生经历的PHP面试

时间:2023-03-30 05:18:00 PHP

前言:有收获请加个小star。如果你没有收获,你可以在没有帮助的情况下提出异议和举报。有兴趣的同学请看我noteBook下的其他知识。我希望对你们有所帮助。本文地址时间点:2017-1116年毕业经历的PHP面试1.什么是面试2.面试准备1.Q:什么时候开始准备?2.问:如何准备?三、面试干货1、某教育机构两边的mysql事务是什么php代码讲解过程百度统计实现原理如何分享sessiongit分支管理策略Restful设计附加问题:论坛表设计场景问题:改进一个登录系统我最满意的是代码懂哪些设计模式,实际用例2,电商公司三个人将一个二维数组的值的首字母大写使用正则表达式获取值html中的href属性和a标签中的值,并以href值作为key,将a标签中的值存入二维数组作为value,语句查询优化寻找第M大N个数中的第一个数。Ajax跨域请求会出现什么问题?如何解决一个CPU密集型网站如何优化以及我对Others最满意的代码3.某民宿杭州分店phpunit的使用Redis异步队列实现详解多线程和协程的理解,说说如何理解现在前端框架中组件化、模块化的http协议中get和post的区别,如何实现使用什么mysql连接?场景问题:索引建立规则用哪个php版本,说明一下?为什么?php7有什么新功能?关于nginx,看看你有没有用过laravel和tp。比较下两个框架。你未来的发展规划,1年,3年等5.某旅游公司为何两边离职?如何选择PHP?关于当前流行的Java比较?有没有系统的培训?你看过php相关的在线课程和书籍吗?看你用过laravel和tp,对比一下这两个框架的基础知识php**laravelpackage**你未来的发展规划,可以问我1年和3年两个问题吗?其他4.面试总结1.什么是面试说到面试,为什么要先离职?在什么情况下你会毫不犹豫地辞职?浏览量达到了51826523次,5000w+,o_o!关键词:成长,发展,委屈,领导力,钱(薪水),能不能把突发的想法捕捉下来,然后分析关键词,哈哈哈还有“我宁愿花11K招新人,也不愿花9K留住老员工”的现象是真的吗?为什么会出现这种现象?你还想看吗?你必须在离开前找到一个新家吗?企业在招聘时一般如何看待裸辞和骑驴?找马?我的理解:面试不是高考,只有一次高考(补习更不用说),可以有n次面试,只要有面试机会,都可以去面试时间,吐不出来也没关系,不要怕失败,公司没有选择你,不是你不优秀,而是你达不到他们的要求。回家想想面试的不足,调整心态,为下一次面试做准备。成功只留给有准备的人1.Q:什么时候开始准备?你是好人吗?不用准备,等猎头挖:老老实实随时准备2.Q:如何准备?项目经历是一部分:面试是离不开的,充分了解你所做的那一部分,并能够在面试中清楚地表达你做了什么,你扮演什么角色。分享知识的地方:比如blog/github,自己的总结会比看别人的总结要好。不仅仅是一点基础知识:字符串操作、数组操作、文件操作、正则操作高级知识:面向对象、数据结构与算法、设计模式、mysql索引、mysql引擎、mysql事务、mysql锁高级知识:linux+nginx+mysql+php+redis优化,只运行没用,谁都会,高并发,分布式系统,负载均衡,分库分表,消息队列3.面试干货1.两者上的mysql事务是什么教育机构的方位?前面讲了mysql的四个特性,原子性、一致性、隔离性、持久化。事务可以理解为要么完成要么失败的操作。面试官问了隔离和锁的问题,我忘了。这个问题我真的没回答------------大家可以参考《Innodb中的事务隔离级别和锁的关系》https://tech.meituan.com/innodb-lock.htmlphp代码解读过程我说的就是它由zend引擎解析成opcode,再转换成机器可识别的代码。平时真的没注意这个。我失败了,失败了。我查了鸟哥《深入理解PHP原理之Opcodes》写的资料http://www.laruence.com/2008/06/18/221.html百度统计的实现原理我没有回答。稍后查看------------参考:http://blog.csdn.net/iqzq123/article/details/8877645如何共享session我说通过redis存储session达到目的分享,后来查了下计划,挺多的-------------参考:http://www.cnblogs.com/wangtao_20/p/3395518.html#commentformgit我写的分支管理策略Master为主分支,dev为开发分支,bug_fix分支为bug分支。面试官说暂时有个bug需要修复,我们在dev上开发了很多内容。我的回答是用bug_fix分支拉master代码,然后一起回去,面试官说dev怎么办,如果换同一个模块,就会有冲突。想了想,确实会,然后向面试官请教。面试官说用gitrebase可以实现。我以前见过这个命令,但我从未使用过它。,一个尴尬的restful设计我说get,post,put,patch,delete,面试官问他们分别怎么用,毕竟他们回答get是从服务器取资源,post是新建资源,还有put是updatecomplete资源,patch是更新部分资源,delete是删除资源,然后是追加问题:忘记论坛的表格设计了。主要考的是如何合理设计表,比如如何设计用户登录信息表?如何设计发帖表单和回复表单?内容字段比较大,如何设计比较好?哪些字段需要被索引?场景题:用伪代码实现一个登录系统的改进步骤1:PC端只有两个表单框和一个注册按钮,后台接收参数,然后保存到数据库步骤2:添加移动端,需要发送短信Step3:加入第三方登录方式,需要发送邮件。第四步:兄弟公司给了我们一个execl表格,里面有用户信息。您需要在后台注册这些用户。HowtomodifyexistingcodeStep4:Iforgot嗯,这里的第三步怎么进一步优化好像不是很好的答案。考察的是逻辑能力和代码组织能力,以及设计模式的重要性。我最满意的代码是免费玩的。项目中遇到的应该最了解哪些设计模式和实际用例。我的答案是工厂模式:定义一个标准,使用的类可以按照这个标准实现相应的功能单例模式:防止重复实例化,减少资源调用数据映射:数据库ORM应用适配模式:兼容旧数据,多态应用的面试官问怎么兼容olddata,看codereview能力看腻了,先看这里2.某电商公司三人面试题挺有意思的,可以比较水平像我这样的面试官。笔试题的解答见php7.php文件中的24、25、26。二维数组的值是大写的。题意大概是这样,印象不深。好像我当时做的时候做错了什么。现在想来,思路是获取key值和value,然后进行双循环,转为大写。使用正则获取html中href属性的值和a标签中的值,并以href值作为key,将a标签中的值存储到一个二维数组中。大概就是这个结构。我简化了

  • 百度baidu腾讯腾迅阿里巴巴alibaba
  • 研究正则表达式的使用和数组的组装。我当时做的不好,回去看正则表达式很容易。优化语句查询test表中数据为500w,字段有id/t_id/type_id/plat_id,语句为selectmax(t_id)fromtestwheretype_id=1andplat_id=1考察mysql的优化语句,这里主要是优化max函数,max函数会造成全表扫描,效率会很低。您可以使用orderbypluslimit进行优化。我回答了selectt_idfromtestwheretype_id=1andplat_id=1orderbyt_idlimit1;当然你也可以使用索引进一步优化速度,可以在这里添加(type_id/plat_id)联合索引。--------------正确的做法是给`t_id`加索引,和(type_id/plat_id)联合索引,orderby不能避免全表扫描。找出N个数中第M个最大的数。看算法。好像是搜索?我当时的想法是先对数组进行排序,然后索引的N-M个数就是M个数。ajax跨域请求时,会出现什么问题?如何解决我的回答:马虎,如果出现跨域问题,请求会被拒绝。出于安全原因,只需将Access-Control-Allow-Origin设置为*。哈哈哈天真-------------回去搜索一下,解决办法还真不少。参考https://dailc.github.io/2017/03/22/ajaxCrossDomainSolution.html如何优化CPU密集型网站没实践过,对吧,没关系,能google一下吗?你能记住吗?能不能脑子里有个大概的概念?我最满意的代码是免费使用的。项目中遇到的项目应该是最佳答案。其他项目查询简历。项目中最困难的部分是什么?如何解决?困了,睡吧3.某民宿杭州分店没有笔试题,纯面试题,比较注重基础,比如操作系统phpunit的使用。我说是的,我只是将预期的数据与数据库中找到的数据进行了比较。面试官问我有没有用过mocks。我听说过这个概念,但我从未尝试过。就是假的意思通过模拟数据库操作来达到测试的目的,还有存根,需要多加练习。骚年o_o------------参考:https://phpunit.de/manual/current/zh_cn/test-doubles。htmlredis异步队列的实现细节可以看我的简历。我当时用的是laravel中的队列机制,通过dispatch()来触发任务。phpartisanqueue:work启动了后台进程来监控队列并完成任务。面试官不满意,问我他的原理是怎么实现的?我说我用一个列表,触发lpush入队,然后rpop出队处理任务。面试官说这是blocking。我不知道是否有有效的方法。面试官好像说一个list的数据可以存储。放到多个列表中并行处理,zzz。如何根据两个属性对redis中的zest进行排序。比如不知道id和age,只知道score排序。知道的请留言,请googlerediszsetmulti-fieldsorting------------查了一下,据说是先自己排序再存入redis老师,zzz进程可以有多个线程,yield可以在php中实现协程。面试官问新版swoole自带协程。你怎么理解的?没研究过zzz------------Process是一个正在运行的程序的实例。进程是内核分配资源的最基本单位。线程是内核执行的最基本单位。一个进程可以包含多个线程协程,相当于语言本身实现了一个函数调度。参考:http://www.cnblogs.com/lxmhhy/p/6041001.html谈谈如何理解当前前端框架中的组件化和模块化。看我会react.js问我,比如react中的components可以理解为一个类,module的意思就是一个文件是一个单独作用域的模块------------参考:http://xiaodongtongxue.top/2016/05/20/浅谈前端自动化%20工程化%20组件化%20模块化/http协议中get和post的区别,如何实现get就是获取resources,postcreateresources获取数据的长度是有限的,而post是无限的。url中get数据安全性差,post不显示在url中。/zhuanlan.zhihu.com/p/22536382最近在看什么书?没看过就老老实实说没看过,不然就是xxxx。一道题,然后说你看的书不够深,我。...4、某众筹杭州分公司PHP三端用的是什么mysql连接?觉得很简单,就说了mysqli和pdo,mysql已经放弃了。面试官想出一句话不是问这个,而是问连接池。面试官又问了,比如laravel默认用的是什么mysql连接,我猜是pdo,他说thinkaboutmexxxxagain,就这样过去了------------回去查了一下很郁闷,默认的PDO,我还以为编译php的时候要考察一下mysqlnd。Laravel中的所有数据库工作都是通过PHPPDO工具完成的,因此在开始开发之前,请确保您的计算机上安装了您选择的特定数据库的驱动程序。场景题:索引创建规则及解释有这么一张表,自增id、姓名、昵称、年龄、客户类型、创建时间。哪些字段需要被索引?为什么?我说年龄、创建时间、客户类型需要索引,where条件经常用到的字段。面试官说customer类型用的enum枚举也需要做索引。我不知道。面试官说其实没必要,枚举只有几种类型,mysql查询会分组查找。一般在写sql之前可以先用explain观察一下sql语句,你用的是哪个版本的php?为什么?php7有什么新功能?幸运的是,我一直在使用php7,因为php7的速度有了很大的提升,而且有很多新的特性,比如标量类型声明、返回类型声明命名空间、Trait、自动加载这些都是现代php所需要的。面试官问我不能发composer包吗?他的自动加载原理是怎样的?我自己创建了一个composer包,但还没有发布。自动加载是通过sql_autoload_register()实现的。面试官说是之前include介绍的吧?你应该考虑一下。我的xxxx面试官说这个文件用到的时候会加载,以达到自动加载的目的。Nginx相关的简历写了nginx负载均衡和反向代理。你怎么做呢?php-fpm可以代理其他端口吗?除了默认的9000nginx,配置php-fpm的时候还用了什么协议?是否有其他协议可用?自己搭建的vps,都是通过多端口实现负载均衡的。反向代理就是代理到apache,使用其他端口。需要配置ini文件,使用http协议,其他协议。不知道面试官是不是说可以用tcp协议。比如socket看到你用过laravel和tp。对比下两个框架,tp是国人写的。这个概念相对陈旧和过时。Laravel是现在最火的php框架。开源社区活跃,工具最多。它使用了面向对象的思想和许多设计模式,值得学习和使用。你看过laravel的源代码吗?看过laravel的container容器,还有ioc控制反转和di依赖注入,通过serverprovider服务提供者bind实例把绑定实例放到容器中,然后通过make解析容器中的一个实例,可以这样通过外观直接静态调用使用。面试官说怎么兼容之前的版本。比如像一个app,出了新版本,老版本也需要兼容。我以前从未做过。我的想法是使用adapter模型来满足两者兼容的要求。其次,你可以使用dingo/api多版本来控制你未来的发展计划。1年、3年的免费玩其实挺重要的。是的,正面回答总是对的,比如深入php,扩展技术栈等简历上的项目询问,项目中最难的部分是什么?如何解决?5、某旅游公司的双面套路真多。面试官非常善解人意。为什么离职?聪明点,只需回答你在表格中写的离职原因即可。不要泄露你的秘密,哈哈哈。如何选择PHP?关于当前流行的Java比较?在这里明智地回答,并比较两者的使用场景。比如PHP适合做web开发,Java有很多选择。是否有系统的web和Android培训?你看过php相关的在线课程和书籍吗?我认为这意味着我是否接受过培训。我当然拒绝了。我说的是MOOC和《Modern PHP》《PHP核心技术和最佳实践》《PHP the right way》的优秀课程。我看到你用过laravel和tp。接下来的两个框架tp是国人写的。概念比较陈旧过时的laravel是现在最火的php框架。开源社区活跃,工具最多。它使用面向对象的思想和许多设计模式。值得学习和使用。你看过laravel的源代码吗?看过laravel的container容器,还有ioc控制反转和di依赖注入,通过serverprovider服务提供者bind实例把绑定实例放到容器中,然后通过make解析容器中的一个实例,可以这样通过外观直接静态调用使用。php基础知识**php面向对象讲封装、继承、多态和多态。接口类使用实现类实现多态php的类型。真的忘了,我没说全,我说的是array数组,string字符串,object对象,resource资源,NULLlaravelpackage**dingo/api和jwt-auth是自己建的吗?你遇到过坑吗?当时项目急,用的是集成的,自己架设没问题。如何使用委托?有哪些桌子?我们还扩充了user用户表,role角色表,perm权限表,role-user用户角色关联表,role-perm角色权限关联表,menu菜单表,menu-perm菜单权限关联表你未来的发展计划,1-year,3年免费玩其实挺重要的。正面回答总是对的。比如深入PHP,扩展技术栈,可以问我两个问题?当场黑问号,怎么有两个问题?面试官:我想看看你的专注力。我说这里的技术团队怎么样+有没有技术分享+我进公司以后会做什么。不要问我为什么问了三个,因为我说到面试官的重点了,哈哈哈简历上的其他问题,你为什么离职,之前有什么收获,你期望什么样的公司等等。为什么要谈套路?否则,我发现面试官准备的问题都是有针对性的,他后面指出我的基础不够扎实,我举个例子,一个基础扎实的人和一个基础薄弱的人做的一样事物。基础扎实的可能很快就搞定了不会出错,而基础薄弱的总是要谷歌和我做的东西会出错,也不知道哪里错了,因为是拿来学说的,不是变成了我自己的。然后我指出,我从来没有系统地学习过php,因为php入门容易,但学起来却要费一番功夫。最后说我的方案还不错,算是加分项吧,哈哈哈。4.面试总结面试了5家公司,拿到了3个offer。自我感觉还不错,哈哈哈。最重要的是心态,面试准备,面试总结,睡眠质量,写的很精简。他们中的许多人都被遗忘了。毕竟,2周后,我只能记住有意义的话题。有兴趣的同学请看我在本笔记本下的其他知识,希望对你有所帮助。后记:有收获请加个小star。如果你没有得到什么,你可以反对。如果没有帮助,请报告三遍。