이 글의 내용은 PHP 클래식 인터뷰 질문 세트에 관한 것입니다. PHP 클래식 인터뷰 질문 세트에는 특정 참고 가치가 있습니다. 이제 도움이 필요한 친구들이 참고할 수 있습니다.
관련 추천: "2019 PHP 면접질문 대요약(모음) 》
요일 제 면접상황을 바탕으로 제가 겪었던 PHP 면접질문을 나열해봤습니다. 기본적으로 제 의견을 바탕으로 답변해드렸습니다. 부적절한 점과 모든 사람과의 작업 토론 및 분석, 인터뷰하는 사람들에게 도움이 되길 바랍니다:
1. 양식 제출 시 Get과 Post의 유사점과 차이점
get 요청은 일반적으로 서버에서 데이터를 얻는 데 사용됩니다. , 그리고 게시물은 일반적으로 서버에 데이터를 제출합니다
get에 의해 전송되는 매개변수는 전달되는 매개변수의 크기에 제한이 있습니다.
get은 더 안전하지 않습니다.
Get 요청은 Request.queryString을 사용하여 서버 측에서 허용됩니다.
2. HTML의 기본 태그는 무엇입니까? 기본 태그는 페이지의 모든 링크에 대한 기본 주소 또는 기본 대상을 지정합니다.
3.echo(),print(), print_r()의 차이점은
ECho는 php 문, print입니다. 및 print_r은 함수입니다. 이 함수는 반환 값을 가질 수 있습니다(예: int, string)print_r()은 복합 유형 변수의 값을 인쇄할 수 있습니다. as array, object)
echo 하나 이상의 문자열을 출력합니다
4. email
/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/
6. 'aAbB'echo implode(‘’,[‘a’, ‘b’, ‘c’]); echo join([‘a’, ‘b’, ‘c’],'');로그인 후 복사
7에서 A의 첫 번째 항목을 가져옵니다. 최소 비용으로 문자를 변환하는 단락을 작성합니다. 문자열은 완전히 반전됩니다. 예를 들어 "0987654321"로 변환합니다. 간단한 주석을 작성하고 표시하는 데 가장 익숙합니다. 함수를 사용하지 마세요.$str=‘aAbB’; echo strpos($str,"A");로그인 후 복사
8. 재귀를 사용하여 계승 평가 알고리즘 F(n): n=5;F(n)=5!=5를 구현하세요. *4*3*2*1=120$s = '1234567890'; $o = ''; $i = 0; while(isset($s[$i]) && $s[$i] != null) { $o = $s[$i++].$o; } echo $o;로그인 후 복사
9. 문자 길이를 fang-zhi-gang으로 변환: FangZhiGangfunction F($n){ if($n==0){ return 1; }else{ return $n* F($n-1); } }var_dump(F(5));로그인 후 복사
10. 배열에 내장된 정렬 방법은 무엇인가요? PHP를 사용하여 클라이언트 IP와 서버 IP를 표시하는 코드를 작성합니다.//方法一 function Fun($str){ if(isset($str) && !empty($str)){ $newStr=''; if(strpos($str,'-')>0){ $strArray=explode('-',$str); $len=count($strArray); for ($i=0;$i<$len;$i++){ $newStr.=ucfirst($strArray[$i]); } } return $newStr; } } //方法二function Fun($str){ $arr1=explode('_',$str); $str = implode(' ',$arr1); return ucwords($str); } var_dump(Fun("fang-zhi-gang")); //FangZhiGang로그인 후 복사
sort($array); //数组升序排序 rsort($array); //数组降序排序 asort($array); //根据值,以升序对关联数组进行排序 ksort($array); //根据建,以升序对关联数组进行排序 arsort($array); //根据值,以降序对关联数组进行排序 krsort($array); // 根据键,以降序对关联数组进行排序
13. 세션과 쿠키의 차이점은?
$_SERVER["REMOTE_ADDR"] $_SERVER["SERVER_ADDR"]
require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require include有返回值,而require没有(可能因为如此require的速度比include快) 包含文件不存在或者语法错误的时候require是致命的错误终止执行,include不是
15를 사용하지 않고 두 변수의 값을 교환합니다. 확장자
session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的。 两者都可通过时间来设置时间长短
16. . PHP를 사용하여 전날의 시간 형식을 2017-3-22 22:21:21
//方法一 $a.=$b; $b=str_replace($b,"",$a); $a=str_replace($b,"",$a); //方法二 list($b,$a)=array($a,$b); var_dump($a,$b);
17로 출력합니다. SQL 문에 고려해야 할 보안은 무엇인가요18. . 트래픽이 많은 웹사이트의 경우 트래픽 문제를 해결하기 위해 어떤 방법을 사용하시겠습니까?function get_extension($file){ //方法一 return substr(strrchr($file,'.'), 1); //方法二 return end(explode('.', $file)); }echo get_extension('fangzhigang.png'); //png로그인 후 복사
$a = date("Y-m-d H:i:s", strtotime("-1 days"));
20.mysql_fetch_row()와 mysql_fetch_array의 차이점은 무엇인가요?
(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译sql语句绑定 (2)使用最小权限原则,特别是不要使用root账户,微不同的动作或者操作建立不同的账户 (3)当sql出错时,不要把数据库出错的信息暴露到客户端
(1)选取适当的字段,打字段设置为NOT NULL,在查询的时候数据库不用比较NULL; (2)使用链接(join)代替子查询; (3)使用联合(UNION)查询代替手动创建临时表; (4)尽量减少使用(LIKE)关键字和通配符 (5)使用事务和外健
(1)首先确认服务器硬件是否满足支持当前的流量; (2)优化数据库的访问; (3)禁止外部盗链; (4)控制大文件下载; (5)使用不同的主机分流; (6)使用流量分析统计;
22.mysql 데이터베이스 엔진은 무엇인가요?
这两个函数,返回的都是一个数组,区别就是第一个函数返回的数组是只包含值,我们只能$row[0],$row[1],这样以数组下标来读取数据, 而MySQL_fetch_array()返回的数组既包含第一种,也包含键值对的形式,我们可以这样读取数据,(假如数据库的字段是 username,passwd):$row['username']$row['passwd']
23. mysql 엔진에서MyISAM과 InnoDB의 차이점에 대해 설명해 주세요.
21.MySQL的几个概念:主键,外键,索引,唯一索引
主键(primary key) 能够唯一标识表中某一行的属性或属性组。一个表只能有一个主键,但可以有多个候选索引。主键常常与外键构成参照完整性约束,防止出现数据不一致。主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。 外键(foreign key) 是用于建立和加强两个表数据之间的链接的一列或多列。外键约束主要用来维护两个表之间数据的一致性。简言之,表的外键就是另一表的主键,外键将两表联系起来。一般情况下,要删除一张表中的主键必须首先要确保其它表中的没有相同外键(即该表中的主键没有一个外键和它相关联)。 索引(index) 是用来快速地寻找那些具有特定值的记录。主要是为了检索的方便,是为了加快访问速度, 按一定的规则创建的,一般起到排序作用。所谓唯一性索引,这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。 总结: 主键一定是唯一性索引,唯一性索引并不一定就是主键。 一个表中可以有多个唯一性索引,但只能有一个主键。 主键列不允许空值,而唯一性索引列允许空值。 主键可以被其他字段作外键引用,而索引不能作为外键引用。로그인 후 복사
25 테이블에는 SQL 문을 사용하여 구현된 세 개의 열 A가 B보다 크면 A 열을 선택합니다. , 그렇지 않으면 B 열을 선택하십시오. B 열의 경우 열이 C 열보다 크면 B 열을 선택하고 그렇지 않으면 C 열을 선택하십시오.MyISAM、 ISAM、HEAP、InnoDB、BDB、CVS...로그인 후 복사
26. Linux 시스템을 설치할 때 netconfig 프로그램을 사용하여 네트워크를 구성해야 합니다.27. 다른 사람이 호출할 수 있는 인터페이스를 PHP로 작성하는 방법은 무엇입니까?
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。 以下是一些细节和具体实现的差别: MyISAM与InnoDB的区别是什么? 1、 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。.frm文件存储表定义。数据文件的扩展名为.MYD (MYData)。索引文件的扩展名是.MYI (MYIndex)。 InnoDB:所有的表都保存在同一个数据文件中(也可能是多个文件,或者是独立的表空间文件),InnoDB表的大小只受限于操作系统文件的大小,一般为2GB。 2、 存储空间 MyISAM:可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。 InnoDB:需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 3、 可移植性、备份及恢复 MyISAM:数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作。 InnoDB:免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了。 4、 事务支持 MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。 InnoDB:提供事务支持事务,外部键等高级数据库功能。 具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。 5、 AUTO_INCREMENT MyISAM:可以和其他字段一起建立联合索引。引擎的自动增长列必须是索引,如果是组合索引,自动增长可以不是第一列,他可以根据前面几列进行排序后递增。 InnoDB:InnoDB中必须包含只有该字段的索引。引擎的自动增长列必须是索引,如果是组合索引也必须是组合索引的第一列。 6、 表锁差异 MyISAM:只支持表级锁,用户在操作myisam表时,select,update,delete,insert语句都会给表自动加锁,如果加锁以后的表满足insert并发的情况下,可以在表的尾部插入新的数据。 InnoDB:支持事务和行级锁,是innodb的最大特色。行锁大幅度提高了多用户并发操作的新能。但是InnoDB的行锁,只是在WHERE的主键是有效的,非主键的WHERE都会锁全表的。 7、 全文索引 MyISAM:支持 FULLTEXT类型的全文索引 InnoDB:不支持FULLTEXT类型的全文索引,但是innodb可以使用sphinx插件支持全文索引,并且效果更好。 8、 表主键 MyISAM:允许没有任何索引和主键的表存在,索引都是保存行的地址。 InnoDB:如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见),数据是主索引的一部分,附加索引保存的是主索引的值。 9、 表的具体行数 MyISAM:保存有表的总行数,如果select count(*) from table;会直接取出出该值。 InnoDB:没有保存表的总行数,如果使用select count(*) from table;就会遍历整个表,消耗相当大,但是在加了wehre条件后,myisam和innodb处理的方式都一样。 10、 CURD操作 MyISAM:如果执行大量的SELECT,MyISAM是更好的选择。 InnoDB:如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。DELETE 从性能上InnoDB更优,但DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除,在innodb上如果要清空保存有大量数据的表,最好使用truncate table这个命令。 11、 外键 MyISAM:不支持 InnoDB:支持 通过上述的分析,基本上可以考虑使用InnoDB来替代MyISAM引擎了,原因是InnoDB自身很多良好的特点,比如事务支持、存储 过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多。另外,任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。로그인 후 복사
28 PHP 헤더() 함수를 사용하여 페이지 404 오류 프롬프트 기능을 구현합니다.总结一: 1.数据类型 Redis数据类型丰富,支持set list等类型 memcache支持简单数据类型,需要客户端自己处理复杂对象 2.持久性 redis支持数据落地持久化存储 memcache不支持数据持久存储 3.分布式存储 redis支持master-slave复制模式 memcache可以使用一致性hash做分布式 value大小不同 memcache是一个内存缓存,key的长度小于250字符,单个item存储要小于1M,不适合虚拟机使用 4.数据一致性不同 redis使用的是单线程模型,保证了数据按顺序提交。 memcache需要使用cas保证数据一致性。CAS(Check and Set)是一个确保并发一致性的机制,属于“乐观锁”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操作,不一致就放弃任何操作 5.cpu利用 redis单线程模型只能使用一个cpu,可以开启多个redis进程 总结二: 1.Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。 2.Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。 3.Redis支持数据的备份,即master-slave模式的数据备份。 4.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 我个人认为最本质的不同是Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存 总结三: redis和memecache的不同在于: 1、存储方式: memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小 redis有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型: redis在数据支持上要比memecache多的多。 3、使用底层模型不同: 新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。 4、运行环境不同: redis目前官方只支持Linux 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上 memcache只能当做缓存,cache redis的内容是可以落地的,就是说跟MongoDB有些类似,然后redis也可以作为缓存,并且可以设置master-slave로그인 후 복사
29.heredoc 구조 및 사용법drop table table1 create table table1( a int, b int, c int ) insert into table1 values(22,24,23) select * from table1 select (case when a>b then a else b end),(case when b>c then b else c end) from table1 select (case when a>b then a when a>c then a when b>c then b else c end) from table1로그인 후 복사
31.javascript 팝업 여부를 결정하는 프로그램 코드 창이 차단되었습니다会让用户输入主机名、域名、域名服务器、IP地址、网关地址和子网掩码等必要信息로그인 후 복사public function authenticationApi($data,$url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //输出格式可以转为数组形式的json格式 $tmpInfo = curl_exec($ch); curl_close($ch); return $tmpInfo; }로그인 후 복사Header("HTTP/1.1 404 Not Found");로그인 후 복사
32. php 직렬화 및 역직렬화를 위한 함수echo <<<EOT <html> <head><title>主页</title></head> <body>主页内容</body> </html> EOT; 注意:结束标识符所在的行不能包含任何其它字符除";"로그인 후 복사
30.nowdoc结构及用法로그인 후 복사
33. 다음 테이블 구조를 사용하여 가장 많은 게시물을 가진 10명의 이름에 대한 SQL 문을 작성합니다(회원(id,username). ,posts,pass, email)$str = <<<'EOD' Example of string spanning multiple lines using nowdoc syntax. EOD;로그인 후 복사
34,. PHP를 Apache 모듈로 설치하려면 http.conf 파일에서 먼저 명령문(?)을 사용하여 PHP 모듈을 동적으로 로드한 다음 명령문( ?) Apache가 PHP 파일에 모든 확장자를 추가하도록 하려면 PHP 스크립트로 처리됩니다.35. 데이터베이스의 트랜잭션은 무엇입니까?
var wroxWin = window.open("http://www.111cn.net", "_blank");if (wroxWin == null) { alert("糟糕!弹出窗口被屏蔽了");}로그인 후 복사
事务就是一系列的操作,这些操作完成一项任务。只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件。即撤消前面的操作,这样可以保证数据的一致性。而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作。
36.apche 和 nginx 的优缺
nginx轻量级,比apache占用更少的内存及资源,抗并发,nginx处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能。apache 相对于nginx 的优点:rewrite比nginx 的rewrite 强大,少bug,稳定。(需要性能用nginx,求稳定就apache)。
37.求两个日期的差数,例如2007-2-5 ~ 2007-3-6 的日期差数
// 方法一:用DateTime类 $day1 = '2003-09-16'; $day2 = '2011-11-23'; $d1 = new dateTime($day1); $d2 = new dateTime($day2); echo $d1->diff($d2)->days; // 方法二,用时间戳计算 echo (strtotime($day2) - strtotime($day1))/(24*3600);
38.下面的代码用来做什么?请解释。$date='08/26/2003'; print ereg_replace("([0-9]+)/([0-9]+)/([0-9]+)","\\2/\\1/\\3",$date);
这是把一个日期从 MM/DD/YYYY 的格式转为 DD/MM/YYYY 格式。我的一个好朋友告诉我可以把这个正规表达式拆解为以下的语句,对于如此简单的表示是来说其实无须拆解,纯粹为了解说的方便: // 对应一个或更多 0-9,后面紧随一个斜号$regExpression = "([0-9]+)/"; // 应一个或更多 0-9,后面紧随另一个斜号$regExpression .= "([0-9]+)/"; // 再次对应一个或更多 0-9$regExpression .= "([0-9]+)";至于 \\2/\\1/\\3 则是用来对应括号,第一个括号对的是月份
39.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(?)中;而链接到当前页面的URL记录在预定义变量(?)中。
(1) echo $_SERVER['PHP_SELF']; (2) echo $_SERVER["HTTP_REFERER"];
40.一个函数的参数不能是对变量的引用,除非在php.ini中把(?)设为on.
allow_call_time_pass_reference
今天就先写到这里吧!在后期的面试中遇到不同的面试题,我在编辑到此处,希望此文会给大家带来帮助,觉写的不错的,对你有帮助中的请动动你的手关注我和点赞分享,祝愿正在找工作的你,能找一份满意的工作。祝你新的旅途愉快!
相关推荐:
위 내용은 PHP 클래식 인터뷰 질문 세트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!