《欢聚时代2017校招笔试题目(PHP工程师类)---错题解析》

来源:互联网 发布:java开源项目下载 编辑:程序博客网 时间:2024/06/05 20:23

今天在牛客网上做了一套面试题真是伤透心啊!整天都是想着做项目!做项目!做项目!有没有想过连公司门都进不了,谁给你做项目的机会。哎!也不怕丢人了,这张试卷我就得了39分【尴尬】。于是决定将错题逐一解析一下。同时巩固一下基础!废话不多说了,下边是我做错的每一题的详解。(选择题加粗的表示正确答案

1,以下js中哪个能每隔1.5秒就调用foo函数一次
A setInterval(foo(),1500);
B setTimeout(1500,foo());
C setTimeout(“foo”,1500);
D windows.time(1500,foo);
解析:这个做错纯属审题不仔细,“每隔1.5S”,setTimeout()是一次性的,而setInterval()是不停调用的,直到调用clearInterval()

2,下面哪个选项不是mysql中innodb引擎的特点?
A 支持事务
B 支持行锁
C 支持全文索引
D 支持外键
解析:既然涉及到了Mysql的存储引擎,那就给大家推荐一篇博客,系统的学习一下Mysql中的各种引擎 http://blog.csdn.net/qh_java/article/details/14045827

3,a[12345]=1;a[12345]=null; 执行以上两行代码后,isset(a[12345])empty(a[‘12345’])的结果分别是__
A false false
B true true
C true false
D false true
解析:首先php中a[12345]a[12345] 是一样的,再次,$变量=null 的方法是可以释放其内存的。isset()方法用于检测变量是否设置,并且不是NULL. 如果使用isset()测试一个被设置成NULL的变量,将返回FALSE.
而empty():当变量存在时,并且非空非0,就会返回false;不存在,也不会产生警告,会返回false

4,$a的值是___
A true
B 1
C false
D null
解析:对于未定义的变量打印出来的就是NULL

5, array(‘a’)+array(‘b’) 的结果是__?
A array(‘a’,’b’)
B array(‘b’,’a’)
C array(‘a’)
D array(‘b’)
解析:这个真是懵逼,不知道为什么,反正运行结果就是array(‘a’)

6, PHP中怎样获取用户上传图片的真实文件类型?__
A getimagesize()
B imagetype()
C $FILES[‘type’]
D exif_imagetype()
**解析:**getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。B,C两个选项中的函数是不存在的,应该是exif_imagetype()和FILES[uploadfile][type]php_FILES[‘uploadfile’][‘type’]来获取文件类型,该方法仅仅只能根据文件后缀来判断文件类型。

7,比较两个字符串是否相同,最佳方式是?
A 使用==
B 使用strcmp()
C 使用strcasecmp()
D 使用strpos()
解析:==是比较地址 strcmp():比较字符串内容是否相等 strcasecmp():忽略大小写,比较字符串是否相等 strpos():查找某个字符串在另外一个字符串中首次出现的位置

8,变量 strabcstr[‘key’] 的值是__
A 没有值
B null
C ‘a’
D ‘’
解析:测试的结果是,会报’key’不存在,然后,后边会输出a

9,假如现在是2010年3月25日9点25分01秒,要使用date()生成“2010325-92501”格式的时间,应该选择以下哪种参数__
A date(‘Ymd-Gis’)
B date(‘Ymd-His’)
C date(‘Ynd-Gis’)
D date(‘Ynd-His’)
解析:这道题我相信好多人跟我一样选了B,m和n的区别就是,n没有前导0,而m有
10,哪个函数可以控制PHP的错误信息是否输出到页面上?
A error_reporting()
B error_log()
C error_trigger()
D error_echo()
**解析:**B. error_log() — 发送错误信息到某个地方
C.写错了,只有trigger_error()— 产生一个用户级别的 error/warning/notice 信息
D.没有这个函数

11,请问以下代码的输出是什么?

<?php/** * Created by PhpStorm. * User: dell * Date: 2017/7/10 * Time: 21:18 *//** * 单例模式: * 应用中某的种需求: * 对于某些类,在使用它的时候,从头到尾(从程序的开始到结束),都只需要一个对象,就可以完成所有的人物 * 单例: * 某个类只允许创建出一个对象,即使去创建多次,也只能得到一个对象(就比如创建一个连接数据库的对象,前前后后只要创建一个就行) *//*class A{}$obj1 = new A();$obj2 = $obj1;//此时还是一个对象,因为$obj2和$obj1指向的是同一个对象$obj3 = new A();*///这个时候才创建出了第二个对象//这样就没法实现单例模式了//实现一个单例类:其只能获得一个对象class B{    private static $instance;//定义成私有,那么它只能在本类中使用。定义成静态就能通过类名来访问了    private function __construct(){}//定义成私有,也就是不让别人在类外new 出对象,这样就只能通过getNew()获取对象    public static function getNew(){        //如果本类中的$instance还没有数据        if(!isset(B::$instance)){            B::$instance = new self;        }        return B::$instance;    }    private function __clone()    {    }}$o1 = B::getNew();$o2 = B::getNew();//我们会发现这创建的还是一个类(资源标识符相同)//var_dump($o1,$o2);//下面我们再看一下一个特殊情况$o3 = clone $o1;//克隆对象(当我把那个__clone()方法定义成私有,这句就会报错)var_dump($o1,$o2,$o3);//这个时候我们会发现$o3是一个新对象了   这个时候又不符合单例了(注意:这个clone算运算符)/* *本来一个类中有一个隐藏的public function __clone()方法,那我们如果想实现单例,我们给它定义成私有就行,不让他在类外使用 */

工厂模式:

<?php/** * Created by PhpStorm. * User: dell * Date: 2017/7/8 * Time: 17:57 *//* * 什么是设计模式? * 所谓设计模式,就是一些解决问题的“常规做法”,是一种认为较好的经验总结。面对不同的问题,可能会有不同的解决办法。此时我们 * 就可以称为不同的设计模式 *//* *工厂模式 * 在实际应用中,我们总是需要去实例化很多很多的类----以得到对象 * 则: * 我们可以设计出来一个工厂(其实就是类),该工厂的作用就是为我们生产各种对象。这种工厂通常只要指定类名,就可以据此获取 * 一个该类的对象 */class factory{    //Instance表示“实例”,也就是指“对象”    static function getInstance($className){//将要实例化的类名传递过来        if(file_exists('./'.$className.'.class.php')){            $obj1 = new $className();            return $obj1;        }else{            return false;        }    }}//比如$obj1 = factory::getInstance('A');//获取类A的一个对象$obj2 = factory::getInstance('B');//获取类B的一个对象

21,根据以下题目编写代码(可使用任意你熟悉的编程语言) 每瓶啤酒2元,2个空酒瓶或4个瓶盖可换1瓶啤酒。10元最多可喝多少瓶啤酒?

其实是个多简单的题,不要给想复杂了

#include<stdio.h>main(){int m,i=0,k=0,n=0;printf("输入钱:");scanf("%d",&m);while(m>=2){m=m-2;i=i+1;k=k+1;n=n+1;while(i>=2){i=i-2+1;k=k+1;n=n+1;while(k>=4){i=i+1;k=k-4+1;n=n+1;}}}printf("一共喝了%d瓶啤酒,还剩%d元,还剩%d个瓶子,还剩%d个瓶盖",n,m,i,k); }

22,说说你对Mysql索引的理解。

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务就是加快对数据的访问速度

普通索引允许被索引的数据列包含重复的值,如果能确定某个数据列将只包含彼此间各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE将它定义为唯一索引

主键是特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字PRIMARY KEY
创建,
索引可以覆盖多个数据列,像INDEX(columnA,columnB)索引,就是联合索引,
索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些操作的时候,还要操作索引文件

阅读全文
0 0
原创粉丝点击