1、什么是面向对象?主要特征是什么?

面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。

2、session与cookie的区别是什么,请从协议、产生的原因与作用说明?

A、http无状态协议,不能区分用户是否是从同一个网站上来的,同一个用户请求不同的页面不能看做是同一个用户。

B、session存储在服务器端,cookie保存在客户端。session比较安全,cookie用某种手段可以修改,不安全。session依赖于cookie进行传递。

禁用cookie后,session不能正常使用。session的缺点:保存在服务器端,每次读取都从服务器进行读取,对服务器有资源消耗。session保存在服务器的文件或数据库中,默认保存在文件中,文件路径由php配置文件的session.save_path指定。session文件时公有的。

3、HTTP状态中302、403、500代码含义?

302:临时转移成功,请求的内容已转移到新位置

403:禁止访问

500:服务器内部错误

401:代表未授权

4、请写出数据类型(int char varchar datetime text)的意思;请问varchar和char有什么区别?

int:整数 char:定长字符 varchar:变长字符 datetime:日期时间 text:文本型

varchar和char区别:char是固定长度的字符类型,分配多少空间,就占用多长空间。varchar是可变长的字符类型,内容有多大就占用多大的空间。

由于varchar类型是可变的,所以在数据长度改变时,服务器要进行额外的操作,所以效率比char类型低。

5、myisam和innodb的基本区别?索引结构如何实现?

A、myisam类型不支持事务,表锁,易产生碎片,要经常优化,读写书读快,适合用于频繁查询的应用。

B、innodb类型支持事务,行锁,有崩溃回复能力,读写速度比myisam慢,适合于插入和更新操作比较多的应用,空间占用大,不支持全文索引。

创建索引:alert table tanlename add index 索引名 (`字段名`)

6、isset()和empty()区别

isset判断变量是否存在,可以传入多个变量,若其中一个变量不存在则返回假;empty判断变量是否为空为假,只可传入一个变量,如果为空位假则返回真。

7、请说明PHP中传值和传引用的区别。什么时候传值什么时候传引用?

按值传递:函数范围内对值的任何改变在函数外都会被会忽略。

按引用传递:函数范围内对值的任何改变在函数外也能反映出这些修改。

优缺点:按值传递时,php必须复制值。特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作。按引用传递不需要复制值,对于性能提高很有好处。

8、在PHP中error_reporting这个函数有什么作用?

设置PHP的报错级别并返回当前级别。

9、说说你对缓存技术的了解?

缓存技术是将动态内容缓存到文件中,在一定时间内访问动态页面直接调用缓存文件,而不必重新访问数据库。

10、现在编程中经常采取MVC三层结构,请问MVC分别指哪三层,有什么优点?

MVC三层分别指:业务模型、视图、控制区。由控制器调用模型处理数据,然后将数据映射到视图层进行显示。

优点:a、可以实现代码的重用性,避免产生代码冗余;b、M和V实现代码分离,从而使同一个程序可以使用不同的表现形式。

11、ajax的优势是什么?

ajax是异步传输技术,可以通过javascript实现,也可以通过jquery框架实现,实现局部刷新,减轻了服务器的压力,也提高了用户体验。

12、在程序开发中,如何提高程序的运行效率?

A、优化sql语句,查询语句中尽量不使用select *,用哪个字段查哪个字段;少用子查询语句可用连接替代;少用模糊查询

B、数据表中创建索引

C、对程序中经常用到的数据生成缓存

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

A、有效使用缓存,增加缓存命中率

B、使用负载均衡

C、对静态文件使用cdn进行存储和加速

D、想法减少数据库的使用

E、查看出现统计的瓶颈在哪里

F、反向代理

14、语句include和require的区别是什么?为避免多次包含同一个文件,可用什么语句替代它们?

区别:

在失败的时候:

include产生一个warning,而require产生直接错误终端

require在运行前载入

include在运行时载入

代替:

require_once、include_once

15、foo()和@foo()之间有什么区别?

@代表所有warning忽略

16、简述PHP的垃圾收集机制。

php中变量存储在变量容器zval中,zval中除了存储了变量类型和值外,还有is_ref和refcount字段。refcount表示指向变量的元素个数,is_ref表示变量是否有别名。如果refcount为0时,就会回收变量容器。如果一个zval的refcount减1之后大于0,他就会进入垃圾缓存区,当缓存区达到最大值后,回收算法会循环遍历zval,判断其是否为垃圾,并进行释放处理。

17、如何实现PHP的安全最大化?怎样避免SQL注入漏洞和XSS跨站脚本攻击漏洞?

基本原则:不对外界展示服务器或程序设计细节(屏蔽错误),不相信任何用户提交的数据(过滤用户提交)。

18、echo、print_r、print、var_dump区别

echo:语句结构

print:是函数,有返回值

print_r:能打印数组、对象

var_dump:能打印对象数组,并且带数据类型

19、写出smarty模板的特点

速度快、编译型、缓存技术、插件机制、强大的表现逻辑

20、PHP如何实现页面跳转?

方法一:php函数跳转,缺点:header头之前不能有输出,跳转后的程序继续执行,可用exit中断执行后面的程序。

header("location:网址");//直接跳转

header("refresh:3;url=网址");//三秒后跳转

方法二:利用meta

echo "";

21、如何把一个gb2312格式的字符串转换成utf-8格式?

iconv("GB2312","UTF-8","字符串内容")

22、如果需要原样输出用户输入的内容,在数据入库之前,要用哪个函数处理?

htmlspecialchars或者htmlentities

23、什么是CSRF攻击?XSS攻击?如何防范?

CSRF:跨站请求伪造,攻击方伪装成用户身份发送请求从而窃取信息或者破坏系统。

讲述基本原理:用户访问A网站登录并生成了cookie,再访问B网站。如果A网站存在CSRF漏洞,此时B网站给A网站请求(此时相当于是用户访问),A网站认为是用户发的请求,从而B网站就成功伪装了你的身份,因此叫跨站脚本攻击。

CSRF防范:

A、合理规范api请求方式GET,POST

B、对POST请求加token令牌验证,生成一个随机码并存入session,表单中带上这个随机码,提交的时候服务器进行验证随机码是否相同

XSS:跨站脚本攻击

防范:不相信任何输入,过滤输入

24、安全对一套程序来说至关重要,请说说在开发中应该注意哪些安全机制?

A、防远程提交

B、防止SQL注入,对特殊代码进行过滤

C、防止注册灌水,使用验证码

25、对json数据格式的理解?

json是一种轻量级的数据交换格式,json数据格式固定,可以被多种语言用作数据的传递。

26、什么是事务?及其特性?

事务:是一系列的数据库操作,是数据库应用的基本逻辑单位。

事务特性:

A、原子性:即不可分割性,事务要么全部执行,要么就全部不执行。

B、一致性:事务的执行使得数据库从一种状态转换成另一种状态。

C、隔离性:在事务提交之前,不允许把该事务对数据的任何改变提供给任何其他事务。

D、持久性:事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。

或者这样理解:事务就是被绑定在一起作为一个逻辑工作单元的sql语句组,如果任何一个语句操作失败,那么整个操作就被失败,以后操作就会回滚到操作之前状态,或者是放个节点。未了确保要么执行,要么不执行,就可以使用事务。

27、什么是锁?

数据库是一个多用户使用的共享资源。当多个用户并发取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。

加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据队形有一定的控制,在该事务释放锁之前,其他的事务不能对此数据队形进行更新操作。

基本锁类型:锁包括行级锁和表级锁

28、索引的作用?和它的优点缺点是什么?

索引就是一种特殊的查询表,数据库的搜索引擎可以利用它加速对数据的检索。它很类似与现实生活中书的目录,不需要查询证书内容就可以找到想要的数据。索引可以是唯一的,创建索引允许指定单个列或者多个列。缺点是它减慢了数据录入的菽粟,同时也增加了数据库的尺寸大小。

29、如何通俗地理解三个范式?

第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;

第二范式:2NF是对记录的唯一性约束,要求记录有唯一标识,即实体的唯一性;

第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余;

30、主键、外键和索引的区别?

定义:

主键:唯一标识一条记录,不能有重复的,不允许为空;

外键:表的外键是另一张表的主键,外键可以有重复的,可以是空值;

索引:该字段没有重复值,单可以有一个空值;

作用:

主键:用来保证数据完整性

外键:用来和其他表建立联系

索引:是提高查询排序的速度

个数:

主键:主键只能有一个

外键:一个表可以有多个外键

索引:一个表可以有多个唯一索引

31、简述private、protected、public修饰符的访问权限

private:私有成员,在类的内部在可以访问;

protected:保护成员,该类的内部和继承类中可以访问;

public:公共成员,完全公开,没有访问限制;

32、堆和栈的区别?

堆:是程序运行期间动态分配内存空间,你可以根据程序的运行情况确定要分配的堆内存大小;

栈:是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;

php数组函数-array_combine()的更多相关文章

  1. 深度解析PHP数组函数array_combine

    前些天写了一篇关于array_merge的函数解析. 今天来看一个新的函数array_combine() 此函数一共有两个参数,一个是合并后数组的键名,另一个为键值. 注意:合并后数组的键名放在第一个 ...

  2. 前端学PHP之数组函数

    × 目录 [1]键值操作 [2]记数[3]回调函数[4]组合[5]栈和队列[6]顺序 前面的话 PHP中的数组功能非常强大,数组处理函数有着强大.灵活.高效的特点.PHP5提供了近100个操作数组的系 ...

  3. PHP函数积累总结(Math函数、字符串函数、数组函数)

    Math函数:10个较常用标红.abs — 绝对值acos — 反余弦acosh — 反双曲余弦asin — 反正弦asinh — 反双曲正弦atan2 — 两个参数的反正切atan — 反正切ata ...

  4. PHP学习之[第06讲]数组、多维数组和数组函数

    一.数组 ①Array(“aa”,12,true,2.2,”test”,50); ②Array(“title”=>“aa”,  ”age”=>20); 1.创建: $arr= array( ...

  5. PHP数组函数的分组归纳

    统计: array_count_values     统计数组中所有的值出现的次数 array_product         计算数组中所有值的乘积 array_sum         计算数组中所 ...

  6. PHP数组函数详解大全

    一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...

  7. php操作数组函数

    整理了一份PHP开发中数组操作大全,包含有数组操作的基本函数.数组的分段和填充.数组与栈.数组与列队.回调函数.排序.计算.其他的数组函数等. 一.数组操作的基本函数 数组的键名和值 array_va ...

  8. php数组函数大全

    一.数组操作的基本函数 数组的键名和值 array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...

  9. PHP之数组函数

    php数组中的预定义变量 预定义常量 CASE_LOWER (integer) CASE_LOWER 用在array_change_key_case()中将数组的键名转换为小写字母.这也是array_ ...

随机推荐

  1. 003android初级篇之【转】Android开发中颜色的定义方法

    正好用到颜色的定义,但脑子里没有记住具体,转载一篇加强印象 1.使用Color类的常量,如: int color = Color.BLUE; // 创建一个蓝色 是使用Android提供的颜色 int ...

  2. eclipse 解决编译出现GBK或UTF8 编码错误的方法

    eclipse由于开源所以支持了比较杂的编码方式,而这些一个工程导入时添加了不少的外来程序,由于不是同一工程一次编码带来了其中含有GBK和 UTF8   UTF16  ASCII等文件编译时就会出现错 ...

  3. Windows下使用Visual Studio 2010 编译ffmpeg全过程

    (注意:请务必先阅读:七,后记补充:) ffmpeg是一个开源的多媒体库,使用非常广泛. 在linux下编译ffmpeg非常简单,而在windows下编译就不是那么容易了.一般在windows下使用M ...

  4. EasyNVR浏览器无插件直播在Linux系统下将录像文件与EasyNVR可执行文件分离运行的方案

    问题背景 在工控机上运行EasyNVR,WEB访问出现设备在线,但是视频没有快照和无法正常直播: 问题原因分析 通过上工控机发现是由于磁盘空间被占满导致的软件运行收到影响. 解决问题分析 由于录像文件 ...

  5. angularjs 发送ajax请求的问题

    在angularjs中使用 ajax 如果使用 jquery的 ajax发送请求会遇到结果返回了,但是页面的值却没有改变,如: $scope.queryNameMatch = function() { ...

  6. influxDB聚合类函数

    1)count()函数 返回一个(field)字段中的非空值的数量. SELECT COUNT(<field_key>) FROM <measurement_name> [WH ...

  7. Quality of service

    w https://en.wikipedia.org/wiki/Quality_of_service Quality of service (QoS) is the overall performan ...

  8. JSP页面中的tab页

    首先下载bootstrap-tab.js和bootstrap.min.css <script type="text/javascript">$('#myTab a'). ...

  9. yum命令的实例

    1) 自定义yum仓库:createrepo 2) 自定义repo文件 3) 使用yum命令安装httpd软件包(在这里需要强调一点,本身执行yum.repos.d时,文件里面是有自带的yum源的,需 ...

  10. 重写toString方法

    当你要读取关于对象的一些有用细节时,可以在对象上调用toString(). 如,当把一个对象引用传递给System.out.println();时,该对象的toString()方法被调用. Java中 ...