面试题总结一

一.基础题:

1.表单中 get与post提交方法的区别?

(1)get是发送请求HTTP协议通过url参数传递进行接收,
而post是实体数据,可以通过表单提交大量信息.
(2)GET安全性比较差 POST安全性比较好
(3)GET传输数据较小 POST传输数据较多

2.session与cookie的区别?

(1)session:储存用户访问的全局唯一变量,存储在服务器上的
php指定的目录中的(session_dir)的位置进行的存放
(2)cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端
,对于Cookie来说是存储在用户WIN的Temp目录中的。
(3)两者都可通过时间来设置时间长短

3.数据库中的事务是什么?

(1)事务(transaction)是作为一个单元的一组有序的数据库操作。
(2)如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。
(3)如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。
如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

4.echo(),print(),print_r()的区别

(1)echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)
(2)print() 只能打印出简单类型变量的值(如int,string)
(3) print_r() 可以打印出复杂类型变量的值(如数组,对象)
(4) echo 输出一个或者多个字符串

5.优化MYSQL数据库的方法

(1)选取最适用的字段属性,尽可能减少定义字段长度,
尽量把字段设置NOT NULL,例如’省份,性别’,最好设置为ENUM
(2)使用连接(JOIN)来代替子查询:
(3)使用联合(UNION)来代替手动创建的临时表
(4)事务处理:
(5)锁定表,优化事务处理:
(6)使用外键,优化锁定表
(7)建立索引:
(8)优化查询语句

6.请简单阐述您最得意的开发之作

答:信息分类(根据自己的情况写)

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

(1)确认服务器硬件是否足够支持当前的流量
(2)数据库读写分离
(3)优化数据表,
(4)程序功能规则
(5)禁止外部的盗链
(6)控制大文件的下载
(7)使用不同主机分流主要流量

8.语句include和require的区别是什么?

为避免多次包含同一文件,可用(?)语句代替它们?

(1)require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require
(2)include有返回值,而require没有
(3)包含文件不存在或者语法错误的时候require是致命的,include不是
(4)include_once require_once

9.谈谈对mvc的认识

由模型(model),视图(view),控制器(controller)完成的应用程序
由模型发出要实现的功能到控制器,控制器接收组织功能传递给视图;

10.请说明php中传值与传引用的区别。什么时候传值什么时候传引用?

(1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略
(2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改
(3)优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。
(4)按引用传递则不需要复制值,对于性能提高很有好处。

11.解释一下PHP的类中:protect,public,private,interface,abstract,final,static的含义

protect受保护的,可以被子类继承,不能在外部调用
public 公开的,可以继承,可以在外部调用
private 私有的,不可以继承,不可以在外部调用
interface 接口
abstract 抽象类
final 定义的方法不能被继承
static 静态的

12.如何设计或配置Mysql,才能达到高效使用的目的。

1.数据库设计方面,设计结构良好的数据库,允许部分数据冗余。
选取最适用的字段属性,尽可能把字段设置为NOTNULL,这样在查询的时候,数据库不用去比较NULL值。

2.系统架构设计方面,表散列,把海量数据散列到几个不同的表里面,集群,数据库查询和写入分开。
写高效sql语句,以提高效率。
使用连接(join)来代替子查询
使用联合(union)来代替手动创建的临时表
所得皆必须,只从数据库取必须的数据。
必要的时候用不同的存储引擎,比如Innodb可以减少死锁,HEAP可以提高一个数量级的查询速度。
使用事务
使用外键
使用索引

13.使用过哪些PHP框架。试描述其优劣点。

laravel 组件式开发,重量级框架,语法优雅

thinkphp 轻量级开发

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

抽象类:
定义:在类中如果至少有一个方法,没有方法体,直接分号结束,那么这个方法叫做抽象方法,要加abstract修饰.
1.含有抽象方法的类肯定是抽象类,但是不是所有的抽象类都必须包含抽象方法.抽象类也要加abstract修饰.
2.不能实例化,也就是不能new成对象.
3.若想使用抽象类,就必须定义一个类去继承这个抽象类,并实现抽象方法(覆盖父类的抽象方法)
4.抽象类对于子类(实现类),有一定约束作用

接口:

定义:如果在一个抽象类中包含的只有抽象方法,可以将其定义为interface(接口),用implements关键字使用它

作用:为了解决面向对象编程语言不支持多重继承的问题.

1.当一个类在继承了一个接口后,它必须实现即覆盖该接口的所有方法才可以实例化使用,否则即为抽象类.

区别:

1.在定义上:抽象类表示该类中可能已经有一些方法的具体定义,接口就仅仅只能定义各个方法的界面,不能有具体的实现代码在成员方法中

2.在用法上:抽象类是子类用来继承的,当父类已有实际功能的方法时,该方法在子类中可以不必实现.实现一个接口,必须实现接口中所有的定义方法,不能遗漏任何一个

15.描述mvc结构

1.MVC是一种设计模式
2.M是model模型,业务逻辑层,V是视图view 主要负责用户交互层,C是控制器 是连接视图和模型的桥梁,就比如一个工厂,C是老板M是工厂,V是显示给用户的产品,mvc很好的
3.mvc优点:
低耦合性,
高重用性
和可使用性,
较低的生命周期成本
,快速的部署,
可维护性

16.有两个文件,一大一小,其中之一有8,000,000个电话号码,另一个文件有500个电话号码,请说明一种方法找出重复的电话号码。

个人解答:遍历500个电话号码的这个文件,检测在不在大文件中.

17.你都看过哪些编程相关的书籍,请举出一个从书中看到的让你觉得很受用的一小段代码示例。

18.MySQL本身自带的数据缓存在什么情况下才会生效?

多次进行查询的数据写入缓存,按查询次数确定优先级
如果超过了缓存的容量,则释放优先级较低的

19.多次进行查询的数据写入缓存,按查询次数确定优先级

SMTP 25;
POP3 110;
SSH 22;
FTP 21;
APACHE/NGINX 80;

20.什么是魔术方法?请列举你知道的4-6个.

用来改变类的属性方法提高类的适用性的一些方法,称之为魔术方法,如:
__get
__set
__isset
__unset
__call
__autoload

21.你用什么方法检查数据库SQL 的效率(通常是数据库query时间),并 定位 和分析脚本执行和数据库查询的瓶颈所在?

1.脚本执行时间,启用xdebug,使用WinCacheGrind分析。

2.数据库查询,mysql使用EXPLAIN分析查询,启用slow query log记录慢查询。

3, xdebug统计函数执行次数和具体时间进行分析。

4, 在线系统用strace跟踪相关进程的具体系统调用。

22.PHP的意思,它能干些什么?

PHP,是英文超文本预处理语言Hypertext Preprocessor的缩写。
PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,
执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

23.根据你的经验谈谈写php程序需要注意哪些问题

1)代码一定要书写规范,必须加注释
2)能用快捷键则用快捷键,提高效率
3)字母之间空格的时候敲tab键,提高效率
4)代码能有多简洁就多简洁,提高开发效率
5)代码尽量不要粘贴复制,尽量手写
6)能用系统函数则用系统函数,尽量不要自定义函数,否则效率会偏低
7)能用字符串函数解决就不要用正则表达式,效率较低

24.优化MYSQL数据库的方法。

1、选取最适用的字段属性
2、使用连接(JOIN)来代替子查询(Sub-Queries)
3、使用联合(UNION)来代替手动创建的临时表
4、事务
5、锁定表
6、使用外键
7、使用索引
8、优化的查询语句

25.什么情况下需要备份数据库?如何备份数据库?

保存数据的完整性,防止数据丢失,病毒感染
1、直接拷走数据库文件
2、使用命令mysqldump
3、使用工具进行备份

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值