总结曾经作过的笔试题

订单号生成规则
function build_order_no() {

return date('Ymd').substr(implode(NULL,array_map('ord',str_split(substr(uniqid(),7,13),1))),0,8);
}
var_dump(build_order_no());

Linux 经常使用命令 http://www.javashuo.com/article/p-sawqjgwr-bb.html

1.GET和POST区别? HTTP请求方式 GET POST PUT DELETE?php

  • GET在浏览器回退时是无害的,而POST会再次提交请求。html

  • GET产生的URL地址能够被收藏,而POST不能够。前端

  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。mysql

  • GET请求只能进行url编码,而POST支持多种编码方式。linux

  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。nginx

  • GET请求在URL中传送的参数是有长度限制的,而POST么有。web

  • 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。正则表达式

  • GET比POST更不安全,由于参数直接暴露在URL上,因此不能用来传递敏感信息。redis

  • GET参数经过URL传递,POST放在Request body中。算法

(以上标准答案参考自w3schools)

GET和POST都是TCP链接。

GET产生一个TCP数据包;POST产生两个TCP数据包。

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

 

Http定义了与服务器交互的不一样方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,咱们能够这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操做。到这里,你们应该有个大概的了解了,GET通常用于获取/查询资源信息,而POST通常用于更新资源信息。

https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

  • GET - 从指定的资源请求数据。
  • POST - 向指定的资源提交要被处理的数据

 HTTP协议包含:通用头域、请求消息、响应消息和主体信息。

 

2.nginx和Apache区别

最核心的区别在于apache是同步多进程模型,一个链接对应一个进程;nginx是异步 的,多个链接(万级别)能够对应一个进程。

Nginx自己就是一个反向代理服务器;Nginx支持7层负载均衡;其余的固然, Nginx可能会比apache支持更高的并发。

Apache在处理动态有优点,Nginx并发性比较好,CPU内存占用低,若是rewrite 频繁,那仍是Apache吧

 

 

3.cookie和session区别?禁用cookie后,session还能用吗?如何共享分布式集群下的session?

  http://www.javashuo.com/article/p-ospdgarp-ba.html

cookie:存储在浏览器中,有大小限制,相对不安全,会泄露用户信息

session:存储在服务器端,无大小限制,相对安全,session_id存储在cookie中

禁用后,session能够存储在URL中.  session_name();   SID;

session.save_handler    存储位置 file  redis  memcache

 

4.PHP垃圾回收机制?运行原理?PHP-FPM是什么?如何肯定一台机器应该开启多少个PHP进程?

垃圾回收机制:引用计数。

每一个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是不是属于引用集合(reference set)。经过这个字节,php引擎才能把普通变量和引用变量区分开来,因为php容许用户经过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用。第二个额外字节是"refcount",用以表示指向这个zval变量容器的变量(也称符号即symbol)个数。全部的符号存在一个符号表中,其中每一个符号都有做用域(scope),那些主脚本(好比:经过浏览器请求的的脚本)和每一个函数或者方法也都有做用域。

https://zhuanlan.zhihu.com/p/30636538

 

PHP-FPM是一种进程管理工具。fastcgi是web服务器与处理程序之间的通信协议。

 

变量的自动回收

在php中 除了 arrayobject类型的变量,其他大部分是自动回收
php 普通变量的回收和 该变量的引用次数有关。

写时复制(Copy On Write:COW),简单描述为:若是经过赋值的方式赋值给变量时不会申请新内存来存放新变量所保存的值,而是简单的经过一个计数器来共用内存,只有在其中的一个引用指向变量的值发生变化时,才申请新空间来保存值内容以减小对内存的占用。 - TPIP 写时复制

这时候,咱们unset操做时refcount 由2变为1,由于有内部引用指向 $a,因此在外部 其所占用的空间并不会被销毁。

而后咱们的外部引用已经被中断了,咱们也不能使用它。它就成了一个“孤儿”,在c语言中叫作野指针。在php中叫作循环引用。内存泄漏。想要销毁变量的话,只能等 php脚本结束。

循环引用形成的内存泄漏

为了清理这些垃圾,引入了两个准则

  • 若是引用计数减小到零,所在变量容器将被清除(free),不属于垃圾
  • 若是一个zval 的引用计数减小后还大于0,那么它会进入垃圾周期。其次,在一个垃圾周期中,经过检查引用计数是否减1,而且检查哪些变量容器的引用次数是零,来发现哪部分是垃圾。

循环引用基本上只会出如今 数组和对象中,对象是由于它的自己就是引用

object和array的回收过程

php7的垃圾回收包含两个部分,一个是垃圾收集器,一个是垃圾回收算法。

垃圾收集器,把刚刚提到的,多是垃圾的元素收集到回收池中 也就是把变量的 zend_refcount的信息 放在回收池中。 当回收池的值达到必定额度了,会进行统一处理。

处理的过程呢,就比较简单。

遍历回收池中的每个变量,根据每个变量,再遍历每个成员,若是成员还有嵌套的话继续遍历。而后把全部成员的 作模拟的 refcount -1。若是此时外部的变量的 引用次数为 0 。那么能够视为垃圾,清楚。若是大于0,那么恢复引用次数,并从垃圾回收池中取出。

垃圾回收的原理

若是你这个变量不是垃圾,那么它的全部成员变量的引用减一以后,必然不会是总变量的引用为0。

http://www.javashuo.com/article/p-emmbacpf-d.html

http://www.laruence.com/2018/04/08/3170.html

https://my.oschina.net/shyl/blog/517656

5.你了解的设计模式是什么?

https://designpatternsphp.readthedocs.io/zh_CN/latest/Creational/README.html

单例模式:instanceof 用于肯定一个 PHP 变量是否属于某一类 class 的实例

工厂模式:

观察者模式:

 

6.myisam和innodb的区别以及应用?索引结构如何实现?

http://www.javashuo.com/article/p-bfbqamtm-k.html

myisam:表锁、不支持外键、不支持事务,支持全文检索(英文),B+树,索引存储为 物理内存地址

innodb:行锁,支持外键,支持事务,不支持全文检索,B+树,索引存储方式不一样 主键ID值 以及数据

 

7.如何优化mysql?

数据表数据类型的优化;(字段类型和字段长度)

SQL语句的优化; (子查询用关联查询代替;limit 所需条数;group by  order by null;)

索引优化;(主键索引、惟一索引、普通索引、联合索引 最左原则、外建索引、全文索引)

存储引擎的优化;(myisam  innodb)

数据表结构的优化; (冗余字段,分库分表,分区)

服务器架构的优化;(读写分离;主从;负载均衡;双主热备)

 

8.mysql的联合索引?有什么特性?何时考虑创建联合索引?

多个字段 最左原则,abc  => a,ab,abc,ac

 

9.深复制和浅复制;

变量有值传递和引用传递,其实,对象也相似如此,因此,对象有浅复制和深复制之说。

 

 

10.简述一下数据库的分表方式以及应用场景。

按时间、按主键ID取模或取余、热数据与冷数据

 

11.简述一下nosql以及应用场景。

redis:

mongodb:

12.设计一个短地址方案,写一个函数或思路。

网上比较流行的算法有两种 自增序列算法、 摘要算法

http://www.javashuo.com/article/p-wefkleed-o.html

https://blog.csdn.net/xyz_lmn/article/details/8057270

 

13.有一个100G的文件,如何统计某个关键词出现的次数。

  substr_count() 函数计算子串在字符串中出现的次数。

  grep -o 'text' text.txt | wc  -l  ( | wc -l是统计次数 )

  strstr — 查找字符串的首次出现
  stristr strstr不区分大小写的版本 
  strpos -查找字符串首次出现的位置 
  substr ( string $string , int $start [, int $length ] ) 
  strrchr ( string $haystack , mixed $needle ) 
  strripos -计算指定字符串在目标字符串中最后一次出现的位置(不区分大小写) 
  stripos -查找字符串首次出现的位置(不区分大小定) 
  strrpos -计算指定字符串在目标字符串中最后一次出现的位置

14.HTTP状态码? 详细的状态码解析 https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

(大部分状况都是代码 或者配置有问题 影响的)

  HTTP状态码主要分为5类:以1开头的表明请求已被接受,须要继续处理;以2开头的表明请求已成功被服务器接收、理解、并接受;以3开头的表明须要客户端采起进一步的操做才能完成请求;以4开头的表明了客户端看起来可能发生了错误,妨碍了服务器的处理;以5开头的表明了服务器在处理请求的过程当中有错误或者异常状态发生,也有多是服务器意识到以当前的软硬件资源没法完成对请求的处理。

200 成功;

 

201;

301 永久重定向;

302 临时重定向;

304:客户端的缓存资源是最新的,要客户端使用缓存。

400   

403 禁止(服务器拒绝响应);

404 找不到资源;

500 服务器内部错误;

502 cgi或fastcgi通讯错误,php超时;

503:服务器目前没法为请求提供服务;

504 服务器超时 fastcgi 占满或其余缘由 复杂 nginx 错误常见

(建议本地环境使用nginx 会出现的错误问题比较多 有助于之后处理服务器问题 解决问题 nginx 日志文件 以及php-fpm 日志文件 学会在linux 上查找文件 搜索文件 一般日志文件会比较大 学会使用搜索 过滤查看日志文件 颇有必要)

 

15.简述长链接和短链接的特色以及应用场景,PHP如何选择?

16.web开发中通常有哪些安全问题并简述一下原理和处理方式。防护方式以及函数

  XSS:跨站脚本攻击

  SQL注入:因为服务端没有作处理 ,直接插入数据库。

  CSRF:

  DOOS:

17.使用过哪些PHP框架?简述一下各自的优缺点?路由机制?

18.简述一下闭包?匿名函数?

19.PHP有关的数据函数?

 array_push

 array_pop

 array_shift

    array_unshift

 array_diff

 array_interest

 array_merge

 array_splice

 array_muiltysort 

20.Linux 下如何把文件的权限设定成777,其中每一个777表明什么?

  chmod 777 文件

     7 所属者 读写执行

  7 所属组 读写执行

  7 其余 读写执行

21.读写一个函数,实现如下功能,字符串open_door替换成OpenDoor,make_by_id替换成 MakeById.

ucfirst — 将字符串的首字母转换为大写

ucwords() - 将字符串中每一个单词的首字母转换为大写

lcfirst() - 使一个字符串的第一个字符小写

strtolower() - 将字符串转化为小写

strtoupper() - 将字符串转化为大写

方法一:

function firstWords($str) {
return str_replace(' ','',ucwords(str_replace('_',' ',$str)));
}
echo firstWords('make_by_id');

方法二:

function firstWords($str) {
return str_replace(' ','',ucwords(preg_replace('/\_/i', ' ', $str)));
}
echo firstWords('make_by_id');

方法三:

function firstWords($str) {
$arr = explode('_',$str);
foreach ($arr as $key => $val) {
$arr[$key] = ucwords($val);
}
return implode('',$arr);
}
echo firstWords('make_by_id');

方法四: 数组形式
function firstWords($str) {
  if(is_array($str)) {
  $arr = str_replace('_',' ',$str);
  foreach ($arr as $key => $val) {
  $arr[$key] = str_replace(' ','',ucwords($val));
   }
   return $arr;
  }
}
var_dump(firstWords(['make_by_id','hello_world','open_eye']));

22.字符串翻转 不用内置函数

http://www.javashuo.com/article/p-ctfyzlii-ba.html

23.写出最少5个PHP魔术函数,并说明用处。

__construct()具备构造函数的类会在每次建立新对象时先调用此方法,因此很是适合在使用对象以前作一些初始化工做。

Note: 若是子类中定义了构造函数则不会隐式调用其父类的构造函数。要执行父类的构造函数,须要在子类的构造函数中调用parent::__construct()。若是子类没有定义构造函数则会如同一个普通的类方法同样从父类继承(假如没有被定义为 private 的话)。

 

24.简述echo 0 == "a0" ? 1 : 2; 结果 1 true

25.请简述left join ,right join ,inner join,corss join,

26.请描述数据库中事务是什么?以及事务常见的一些问题以及相应的解决方案?隔离级别?

27.写10个linux经常使用命令?

  cd more find mkdir chmod grep less top tail header ps tar ll ls whereis which locate make make install wget su awk 

28.nginx 将全部到 /api/xxx 的请求重写到 /api.php/xxx

29.用PHP打印出前一天的时间,格式是 2018-12-1 10:22:11;

 date('Y-m-d H:i:s',strtotime('-1 days'));

30.echo  print  print_r 区别

31.写一个函数,从URL中取出文件的扩展名。例如:http://www.sina.com/abc/de/fg.php?id=1, 须要取出PHP或.php

32.PHP5的权限控制修饰符

  public 公共的 任何地方均可以调用

  private 私有的 只能本身调用,不能被继承也不能被重写,子类也不可使用。

  protected 受保护的 只有父类或子类可使用。

33.哪些函数能够打开一个文件,以对文件进行读和写操做?列举出你知道的。

34.MVC的理解?

35.论坛中的无限极分类的 实现原理?

36.SVN和GIT的区别?

  SVN 集中式   无网络不能提交或拉取数据

  GIT 分布式 有无网络均可以commit add ,提交的数据会放在暂存区中,tag打包 标签

37.对于大流量的网站,您采用什么样的方法来解决访问量问题?

38.请写一个匹配IP地址的正则表达式。

39.描述你所使用的数据接口实现方式,以及接口校验的方法。

40.如何分析一条sql语句的性能?

41.数据表设计原则,常见的分库分表策略?

42.微信朋友圈数据结构是如何设计的?

43.如何实现负载均衡,多服务器以前如何共享session?

44.经常使用排序算法有哪些?时间复杂度有什么差别?写出一种排序算法的具体实现代码?

45.HTTP 三次握手 四次挥手

一、TCP/IP链接

 HTTP即超文本传输协议,是一个基于请求与响应模式的、无状态的、应用层的协议,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
  手机可以使用联网功能是由于手机底层实现了TCP/IP协议,可使手机终端经过无线网络创建TCP链接。TCP协议能够对上层网络提供接口,使上层网络数据的传输创建在“无差异”的网络之上。
 
创建起一个TCP链接须要通过“三次握手”:
 
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
 
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
 
握手过程当中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP链接一旦创建,在通讯双方中的任何一方主动关闭链接以前,TCP 链接都将被一直保持下去。断开链接时服务器和客户端都可以主动发起断开TCP链接的请求,断开过程须要通过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终肯定断开).
 

HTTP的工做过程:当咱们请求一个超连接时,HTTP就开始工做了,客户端先发送一个请求到服务器,请求内容包括:协议版本号、请求地址、请求方式、请求头和请求参数;服务器收到请求后作相应的处理,并将响应数据返回到客户端,响应内容包括:协议版本号、状态码和响应数据。前端根据响应数据作相应的处理,就是最终咱们看到的内容。这些过程是HTTP自动完成的,咱们只是输入或点击请求地址,而后查看前端给咱们展现的内容。更多关于HTTP协议的介绍请参考:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html 很详细的讲解

 

46.一个网站从前端到后端有哪些能够缓存的地方?

  CSS JS 图片服务器 CDN缓存,减小HTTP请求,数据缓存,静态化页面,

47.include 和require 、require_once 区别?

  include在引入不存文件时产生一个警告且脚本还会继续执行.    若是no.php文件不存在,echo '123'这句是能够继续执行的.    warning

  require则会致使一个致命性错误且脚本中止执行。若是no.php文件不存在,echo '123'这句是不能够继续执行的.   error

 48.mysql_fetch_row()  和 mysql_fetch_array()区别?

  row 获取一行数据

  array 获取全部数据

49.用PHP写出显示客户端IP与服务器IP的代码?

客户端:<?=$_SERVER['REMOTE_ADDR']?>
服务器端:<?=$_SERVER['SERVER_ADDR']?>

51.mysql有哪几种数据引擎,有何区别?

52.写一个函数抓取远程图片并放在本地

53.写一个函数验证电子邮箱的格式是否正确。

<?php $mail = 'runoob@runoob.com'; //邮箱地址

$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";

preg_match($pattern, $mail, $matches);

var_dump($matches); //输出匹配结果

?>

 

<?php $email = 'runoob@runoob.com'; //邮箱地址

  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

    $emailMsg = "非法邮箱格式";

  } else { $emailMsg = "正确邮箱格式"; }

  echo $emailMsg;

?>

54.在nginx+php-fpm 的架构中,用户访问出现http 502 状态,过一段时间返回http 504 状态,简述这一变化的缘由,以及如何快速解决这一异常状态?

55.若是你申请了5G的redis,写满后你认为会出现什么状况?

56.日志文件access.log,日志列字段为date time request_url,多列使用空间分隔,每条日志独立成行,

例:2018-10-11 09:11:11  /action1

  2018-10-11 09:11:11  /action2

  2018-10-11 09:11:11  /action3

   问题:可使用任意脚本方式,统计出日志文件里,每种action的数量。

  问题:可使用任意脚本方式,统计出日志文件量,每分钟QPS峰值的时间点和数值。

57.购买商品是避免超卖商品(并发),避免订单数和库存数量不一致的问题。

58.瞬间访问量的处理。有一个活动,预计10分钟会带来1000万PV,请问怎么处理问题?

59.mysql乐观锁、悲观锁原理?

60.mysql中datetime,timestamp、int字段类型联系与区别?

int
1. 占用4个字节
2. 创建索引以后,查询速度快
3. 条件范围搜索可使用使用between
4. 不能使用mysql提供的时间函数

Int占据4个字节,以整形存储时间戳,创建索引以后,查询速度快,条件范围搜索可使用使用between,不能使用mysql提供的时间函数。
结论:适合须要进行大量时间范围查询的数据表

datetime
1. 占用8个字节,Mysql以 YYYY-MM-DD HH:MM:SS 形式检索和显示datetime类型的数据,理论上存储的时间范围为 1000-01-01 00:00:00 到 9999-12-31 23:59:59
2. 容许为空值,能够自定义值,系统不会自动修改其值。
3. 实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)

4. 与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

5. 能够在指定datetime字段的值的时候使用now()变量来自动插入系统的当前时间。

在建立或者修改表结构的语句中,若是咱们,使用下面的语句,默认值为当前时间(更新表记录并不会修改该时间):

ALTER TABLE test ADD created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER updated_at;
假如,一样字段,咱们修改给该字段赋予属性on update CURRENT_TIMESTAMP,则会在每次更新数据的时候自动更新修改时间:

ALTER TABLE test CHANGE created_at created_at DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
还有一个特性:与时区无关

应用场景:适合用来记录数据的原始的建立时间,由于不管你怎么更改记录中其余字段的值,datetime字段的值都不会改变,除非你手动更改它。

timestamp
1. 占用4个字节
2. 容许为空值,可是不能够自定义值,因此为空值时没有任何意义。
3. TIMESTAMP值不能早于1970或晚于2037。这说明一个日期,例如'1968-01-01',虽然对于DATETIME或DATE值是有效的,但对于TIMESTAMP值却无效,若是分配给这样一个对象将被转换为0。
4.值以UTC格式保存( it stores the number of milliseconds)

5.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

6. 默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间。
7. 数据库会自动修改其值,因此在插入记录时不须要指定timestamp字段的名称和timestamp字段的值,你只须要在设计表的时候添加一个timestamp字段便可,插入后该字段的值会自动变为当前系统时间。
8. 默认状况下之后任什么时候间修改表中的记录时,对应记录的timestamp值会自动被更新为当前的系统时间。
9. 若是须要能够设置timestamp不自动更新。经过设置DEFAULT CURRENT_TIMESTAMP 能够实现。
修改自动更新:
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
修改不自动更新
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 

结论:timestamp类型适合用来记录数据的最后修改时间,由于只要你更改了记录中其余字段的值,timestamp字段的值都会被自动更新。(若是须要能够设置timestamp不自动更新)

TIMESTAMP

新增timestamp 字段

alter table table_name add column created_at timestamp not null default CURRENT_TIMESTAMP;
TIMESTAMP占据4个字节,存储形式为 YYYYMMDDHHMMSS即以UTC形式存储 ,存储范围为1970-01-01 08:00:01到2038-01-19 11:14:07.超出这个值会被存储为0.能够设置字段的长度,设置字段的长度并不改变实际的值,可是会影响查询显示的结果。例如:

字段类型 显示格式 保存格式
TIMESTAMP(14) YYYY-MM-DD-HH-MM-SS YYYYMMDDHHMMSS
TIMESTAMP(12) YY-MM-DD-HH-MM-SS YYMMDDHHMMSS
TIMESTAMP(10) YY-MM-DD-HH-MM YYMMDDHHMM
TIMESTAMP(8) YY-MM-DD-HH YYMMDDHH
TIMESTAMP(6) YY-MM-DD YYMMDD
TIMESTAMP(4) YY-MM YYMM
TIMESTAMP(2) YY YY
若是在一张数据表中,有多个列是TIMESTAMP类型的,只有第一个会在每次更新记录的时候会自动更新时间,能够做为记录修改时间,其余的能够做为数据原始建立时间。

默认值为CURRENT_TIMESTAMP(),其实也就是当前的系统时间

应用场景:适合记录数据的最后修改时间,只要有修改记录,就能够把时间保存下来,不须要你手工去记录。因为占用字节比较小,效率上也会高点,可是时间上的限制,不能超出2038年,不能早于1970年。

比较大的缺陷:TIMESTAMP比较受时区timezone的影响以及MYSQL版本和服务器的SQL MODE的影响

虽然咱们查询显示的格式相似于字符串,可是仍是能够直接经过order 进行排序来实现简单的时间比较

各类场景不同,能够选择适合的类型做为时间存储的列类型。

DATE

Date只存储日期,不存储时间,也就是说好比今天2016-03-04,并不存储时分秒。MySQL 以 'YYYY-MM-DD' 格式检索与显示 DATE 值。支持的范围是 '1000-01-01' 到 '9999-12-31'

 

61.请说明PHP中传值和传引用的区别,何时传值何时传引用?

62.面向对象中接口和抽象类的区别以及应用场景?

63.foo()和@foo()区别?

64.thinkphp中url模式有哪几种?默认是那种?自动加载类?

spl_autoload_register()

若是须要多条 autoload 函数,spl_autoload_register() 知足了此类需求。 它实际上建立了 autoload 函数的队列,按定义时的顺序逐个执行。
相比之下, __autoload() 只能够定义一次。

65.数据库中事务是什么?概述mysql中事务的回滚机制?

66.二维数组去重?

//二维数组去掉重复值 
function array_unique_fb($array2D) 

foreach ($array2D as $v) 

$v = join(",",$v); //降维,也能够用implode,将一维数组转换为用逗号链接的字符串 
$temp[] = $v; 

$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组 
foreach ($temp as $k => $v) 

$temp[$k] = explode(",",$v); //再将拆开的数组从新组装 

return $temp; 

67.比较连个字符串A和B,肯定A中是否包含B中全部的字符。(不限制大小写和出现顺序)

  

68.实现以下接口完成描述功能:LRU算法, 

 

有表以下,只有一个select语句表,不及格科目大于或等于2科的学生,的平均分(全部科目的平均分)。

select * from student

----------------------------------------

name  |  subject  |   score |

张三  |  数学 | 80

张三 | 语文  |53

张三  | 英语 | 59

李四 | 数学 | 55

李四 | 语文 | 56

李四 | 英语 |  50

要点: 1.要统计每一个同窗不及格科目的个数。  2.计算平均值。3.查询每一个学生的最大分数的科目以及分数。

 

 

 

 

简述PHP这门编程语言的特色以及优缺点?

简述一下HTML5的新特性?是否了解响应式布局?其实现原理是什么?

相关文章
相关标签/搜索