逍遥说职场 发表于 2021-8-19 12:56:38

面试经验之BATMJ大厂面试PHP岗位

https://p26.toutiaoimg.com/large/pgc-image/7f994ce733df4be083fc1dcce6eb0120
1、[语言基础]PHP的整型溢出问题是怎样的?
PHP的整型数的字长和平台有关,对于32位的利用系统,最大的整型是有二十多亿,其实就是2的31次方,最小为-2的31次方,PHP不支持无符号的整数。 如果一个数超出了integer范围,将会被主动表明为float。如果实行的运算结果超出了 integer 范围,也会返回 float。(那在java、C中的整型整型溢出会怎样)


2、[语言基础]怎样明白OOP?
OOP,面向对象编程,包括三个方面,继承性、封装性、多态性,其中最根本的东西就是抽象。继承性,即扩展性,通过子类对已经存在的父类进行功能扩展。封装性,要求外部不能随意存取对象的内部数据,即对该类中的详细实现做封装,用户不必知道内部的详细实现,只有知道它是干什么的,怎么用就好了。多态性,就是类的抽象和接口,同一个类能够处理多种类型对象的能力。我们在现实中,看到的任何东东都可以看做为一个对象,然后通过进一步的抽象为类,类又可以演变为许多类似的对象。举个简朴的例子,将我们看到的一个房子抽象为一个ROOM类,包括基本的门,窗,桌子等物件,人可以收支等功能。 如今我们继承ROOM类为Classroom,包括扇门,有大窗,有桌椅,另外只包括一个优劣和一个讲台,老师和同砚可以上课。如今我们实例化这个Classroom类为Classroom_621对象,包括两扇门,四扇大窗,30套桌椅,有同砚正在上毛概课。


3、[设计模式]你对于设计模式和MVC的明白
Model-View-Controller,模型、视图、控制器,一想到MVC就会想到JAVA,由于JAVA是一个完全面向对象的语言,MVC最早出如今smalltalk中,其核心就是要将试图和数据模型分离,这样不同的程序就可以有不同的展示。模型,即程序员写的功能、算法和数据模型,也就是我们说的系统业务逻辑层。视图,即前端,图形界面。展示给用户看的。控制器,主要负责对请求处理、转发和加载视图。设计模式,说白了就是代码的设计履历的总结和归类,设计模式最早应用于建筑行业,编程的设计模式按最早的GoF所述,包括23种设计模式,主要用于面向对象的程序编程。遵循几个设计原则:开闭原则、单一职责原则、里氏替换原则、依靠注入、接口分离、迪米特原则、优先使用组合而不是继承等等。包括创建型模式、结构性模式、行为模式三类。


4、[网络协议]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 0KConnectlon:closeDate: Thu, 13 Oct 2005 03:17:33 GMTServer: Apache/2.0.54 (Unix)Last—Nodified:Mon,22 Jun 1998 09;23;24 GMTContent—Length:682lContent—Type:text/html这个相应消息分为3部分:1个起始的状态行(status line),首部、1个包含所请求对象本身的附属体。状态行有3个字段:协议版本字段、状态码字段、缘故原由短语字段。[请求消息格式]GET /somedir/page.html HTTP/1.1Host:www.itheima.comConnection:closeUser-agent:Mozilla/4.0Accept-language:zh-cn(额外的回车符和换行符)该请求消息的第一行称为请求行 (request line),后续各行都称为头部行(header)。请求行有3个字段:方法字段、URL字段、HTTP版本字段。[状态码]1xx 消息2xx 成功3xx 重定向4xx 请求错误5xx 服务器错误[常见状态码]200 OK。请求已成功,请求所盼望的相应头或数据体将随此相应返回。300 Multiple Choices。请求资源有多个选择,如请求文本有法语版、英语版等等。301 Moved Permanently。表示请求的网页已永久转移到新位置302 Found。表示页面在做暂时跳转时返回的状态。304 Not Modified。客户的缓存资源是最新的, 要客户端使用缓存。400 Bad Request。错误的请求。403 Forbidden。请求被服务器拒绝了。404 Not Found。表示服务器找不到请求的网页,服务器上不存在的网页经常会返回的HTTP状态码。500 Internal Server Error。503 Service Unavailable。服务器如今无法为请求提供服务,但过一段时间就可以恢复服务。504 Gateway Timeout。与状态吗408类似, 但是相应来自网关或署理,此网关或署理在等待另一台服务器的相应时出现了超时。505 HTTP Version not supported。 HTTP协议版本不支持。


5、[服务摆设]简朴说下Apache中rewrite机制和PHP框架中URI路由机制
1)URL重写,其实就是把用户通过浏览器请求的URL,到了被页粳apache根据预先设置的重写规则将该请求指向真正的资源路径,说白了就是打马虎眼,把真正的路径改头换面后给用户访问,可问题是这样做有啥用处呢。1、SEO方面。将动态的URL静态化,以满足搜索引擎的胃口。2、访问控制。好比,通过重写规则后,客户端不易判断背景程序类型等。3、URL重定向。当网站更改域名或增加别名URL后,可以通过规则轻松的指向要访问的URL。mod_rewrite 使用基于正则表达式动态的修改传入请求的URL。它可以将URL映射到文件系统路径,也可以将一个URL映射到另一个URL。它使用了没有限制数量的规则来利用URL,每条规则可以包括没有限制数量的附加条件。你可以通过多种方式来检测,如,服务器变量、环境变量、HTTP头、时间戳等。mod_rewrite 利用整个URL路径,包括path-info的部分。一个重写规则可以被设置在http.conf或者.htaccess中。一个重写规则生成的路径可以包括一个请求字符串,或者内部的子程序处理,外部请求的重定向,或者穿透内摆设理等。2)PHP框架中的URI路由机制,与apache重写类似,一样寻常包括通配符和正则两种规则。让用户可以重新定向(remap)URI处理程序. 设定你本身的路由规则。


6、[数据库]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这样的环境下,才会用到刚建的复合索引。


7、[数据库]MySQL的表类型及MyISAM与InnoDB的区别
MySQL常见的表类型(即存储引擎)show engines查察支持表类型设置。常见包括:MyISAM/Innodb/Memory/Merge/NDB其中,MyISAM和Innodb是最常用的两个表类型,各有优势,我们可以根据需求环境选择适合本身的表类型。1)每个数据库存储包括3个文件:.frm(表定义)、MYD(数据文件)、MYI(索引文件)2)数据文件或索引文件可以指向多个磁盘3)Linux的默认引擎,win默认InnoDB4)面向非事务类型,克制事务型额外的开销5)实用于select、insert密集的表6)MyISAM默认锁的调度机制是写优先,可以通过LOW_PRIORITY_UPDATES设置7)MyISAM类型的数据文件可以在不同利用系统中COPY,这点很紧张,布署的时候方便点。1)用于事务应用程序2)实用于update、delete密集的利用。实行select count() from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简朴的读出保存好的行数即可。注意的是,当count()语句包含 where条件时,两种表的利用是一样的。DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。3)引入行级锁和外键的约束4)InnoDB不支持FULLTEXT类型的索引


8、[算法]简朴说下快速排序算法
基本思想:通过一趟排序将待排序列分割成两部分,其中一部分比另一部分记录小,再分别对这两部分继续快速排序,以达到有序。算法实现:设有两个指针low和high,初值为low=1,high=n,设基准值为key(通常选第一个),则首先从high位置开始向前搜索,找到第一个比key小的记录与key交换,然后从low位置向后搜索,找到第一个比key大的记录与基准值交换,重复直至low=high为止。第一趟排序结果,key之前的记录值比key之后的记录值小。11 25 9 3 16 2 //选择11为key2 25 9 3 16 112 11 9 3 16 252 3 9 11 16 25
9、[服务器]awk、sed、sort的基本使用(用实例考察的)
[例]:有如下文件test,请统计每个网址出现次数,用一句shell实现。
a www.baidu.com 20:00
b www.qq.com 19:30
c www.baidu.com 14:00
d www.baidu.com 23:00
e www.qq.com 20:30
f www.360.com 20:30
cat test| awk -F’ ‘ ‘{print $2}’ |sort | uniq -c | sort -rn
cat查察文件内容
相对于sed对一行数据处理
awk是对一行分成多个字段进行处理。
sort
-r进行反向排序
-n纯数字排序
uniq -i忽略大小写字符的不同
-r进行技术

10、[中间件]Memcached、redis的使用和明白
Memcached和redis 都是一个key-value的内存式存储系统,通过hash表来存储检索结果,做到强盛的缓存机制。像新浪的微博、淘宝等大流量站点都必须的使用了这些东东。Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个同一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简朴的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(聚集)和zset(有序聚集)。
页: [1]
查看完整版本: 面试经验之BATMJ大厂面试PHP岗位