首页 > 编程 > PHP > 正文

PHP面试基础题之一

2019-11-10 16:52:57
字体:
来源:转载
供稿:网友

1、echo,PRint,printf(),sprintf(),print_r(),var_dump()的区别。

答:

echo 用于输出变量或字符串,他是一个php语句,并非一个函数,所以他并不存在返回值。

print 同echo一样 print也不是一个函数 因此无需对其使用括号,但print稍慢于echo,需要注意的是使用print() 加上括号时会返回1。

printf()函数用于输出格式化字符串,sprintf()函数返回一个格式化后的字符串,而不是输出。

print_r()函数用于打印关于变量的易于理解的信息。

var_dump()函数用于打印变量的内容,类型,长度等。

<?phpecho "aaa ","bbb ","ccc "; //aaa bbb cccecho("aaa");    //aaa//echo("aaa","bbb");//会报错,不可以传递多个参数。print "aaa"; //aaa$a = print("aaa"); //$a = 1$str = "aaa";$b = print_r($str); //打印输出 ,并返回1.echo $b; // 1$b = print_r($str,true); //不打印输出,将$str作为返回值。echo $b; // aaaprintf("My name is %s %s","朱","孝远"); //My name is 朱 孝远//在s前添加1/$或2/$...表示后面的参数显示的位置printf("My name is %s %1/$s","朱","孝远");  //My name is 朱 朱sprintf("My name is %s %s","朱","孝远"); //没有任何输出$c = sprintf("My name is %s %s","朱","孝远");echo $c;    //My name is 朱 孝远

2、表单中get与post提交方法的区别。

答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息。

3、session与cookie的区别。

答:session:存储用户访问的全局唯一变量,存储在服务器上的PHP指定的目录中的(session_dir)的位置进行的存放。

cookie:用来存储连续访问一个页面时所使用,是存储在客户端,对于Cookie来说是存储在WIn的Temp目录中。

两者都可通过时间来设置时间长短。

4、禁用Cookie后,Session还可以用吗,有什么解决方案?

第一种:通过url传值,把session_id附加到url上。(缺点:整个站点中不能有纯静态的页面,因为纯静态页面session_id将无法继续传到下一页面)

第二种:通过隐藏表单,把session_id放到表单的隐藏文本框中同表单一块提交。(缺点:不适用<a>标签之中直接跳转的非表单的情况)

5、HTTP和HTTPS的区别。

答:HTTP效率更高,HTTPS安全性更高。

HTTP:超文本传输协议,信息明文传输,是互联网上应用最为广泛的网络协议。HTTP使用的端口号是80,HTTP协议是无状态的(所以采用session或cookie去标识用户状态)。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS使用的端口443,HTTPS协议需要到ca申请证书,一般免费的证书很少,需要交费。

6、数据库中的事务是什么?事务的四个特性?

答:事务是指用户定义的 一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

事务具有4个特征:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这4个特性简称为ACID特性。

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性:事务执行的结果必须是使数据库从一个一致性状态变到了一个一致性状态。

隔离性:一个事务的执行不能被其他事务干扰。

持续性:持续性也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久的。

7、索引的最左前缀原则?

答:也是最左优先,比如为name,age,city三个列建立多列索引,相当于创建了name和name,age组合索引和name,age,city的组合索引。如果where条件选择的是age and city 或 age 、city这些字段来查,则不会使用到索引,会遍历全表查找。一般情况下,where子句中使用最频繁的一列放在最左边。

8、MySQL存储引擎MyISAM与InnoDB区别。

答:Mysql中有很多引擎,InnoDB和MyISAM是最常使用的两种,其中MyISAM是MySql默认存储引擎。

事务:InnoDB支持事务功能,MyISAM不支持并且MyISAM的执行速度更快且性能更好。

数据操作语言:MyISAM引擎适合执行大量select操作,InnoDB引擎适合执行大量的inset或update操作。

锁机制:MyISAM锁的粒度是表级即表级锁,InnoDB支持行级锁定即行级锁。

物理结构:MyISAM表存放在三个文件中:frm文件存放表格定义,数据文件是MYD(MyData),索引文件是MYI(MYIndex)。

    InnoDB表由共享空间、日志文件组(rado文件)、表结构定义文件组成。若将innodb_file_pre_table设置为on,则系统将为每个表单独生成一个table_name.ibd的文件,在此文件中存储与表相关的数据、索引、表的内部数据字典信息等。

索引:MyISAM支持全文类型索引,InnoDB不支持全文索引。

查询表的行数:比如执行select count(*) from table ,MyISAM引擎,表的行数存储在表中,没有使用where条件 可以直接读取出保存好的行数,所以效率较高。

    InnoDB中不保存表的具体行数,需要扫描一遍整个表来计算多少行,所以效率较低。

总结:MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。如果应用中需要大量使用select查询,那么MyISAM是更好的选择。

   InnoDB用于事务处理应用程序,具有众多特性,包括ACID事务。如果应用中需要执行大量的insert或update操作,则应该使用InnoDB。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表