面试杭州复杂美科技有限公司的PHP开发岗位。

以下是这家公司的PHP开发岗的笔试题,笔试题个人看来不是非常难,但是我做的不好。期望对大家有所帮助!!!

1.列举你使用过或者接触过的常用缓存技术。

解:全页面静态化缓存、页面部分缓存、数据缓存、查询缓存、按内容变更进行缓存、内存式缓存、apache缓存模块、php APC缓存扩展、Opcode缓存。(参考链接php缓存技术总结)。


2.PHP中防Sql注入,防止Xss攻击常用的解决方案。

解:PHP中防Sql注入常用的解决方案:使用预处理语句和参数化的查询(参考链接PHP中如何防止SQL注入);

      防止Xss攻击常用的解决方案:1.直接过滤所有的JavaScript脚本;

2.系统的扩展函数库提供了XSS安全过滤的remove_xss方法;

3.转义Html元字符,使用htmlentities、htmlspecialchars等函数

3.“贵公司尾号1111的账户2月23日17时15分电子汇入收入人民币1.27元,余额850.23元。对方户名:测试。[建设银行]

以上是一条银行入账短信,请使用正则解析出短信中 公司尾号 日期时间 入款数量 资金余额 以及 对方户名 短信来源银行信息

解:

公司尾号对应的正则表达式:'/[0-9]{4}/'日期时间:‘/\d{1,2}月\d{1,2}日\d{1,2}时\d{1,2}分/’入款数量:‘/收入人民币(\d{1}\.\d{1,2})/’资金余额: ‘/余额(\d{1,3}\.\d{1,2})/’对方户名:'/对方户名:([\u4e00-\u9fa5]+)/'短信来源银行信息:'/\[([\u4e00-\u9fa5]+)\]/'

注:正则表达式不是很擅长,有错误希望指正讨论。参考链接(php中正则表达式详解,在线正则表达式测试)。


4.MySQL 数据库中的字段类型 varchar 和char的主要区别是什么?哪种字段的查找效率要高,为什么?

解:

“在mySQL 中char 和 varchar 都是存储字符串的,区别在于char有固定的长度,而varchar属于可变长的字符类型。

char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索         操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录       其长度的字节(即总长度为L+1字节)。

char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使         用char类型。

定长的char的优势: 
     一,存储很短的信息,比如门牌号码101,201……这样很短的信息应该用char,因为varchar还要占1个byte用于存储信息长          度,本来打算节约存储的现在得不偿失。

二,固定长度的。比如使用uuid作为主键,那用char应该更合适。因为他固定长度,varchar动态根据长度的特性就消失了,而      且还要占1个长度信息。

三,十分频繁改变的column。因为varchar每次存储都要有额外的计算,得到长度等工作,如果一个非常频繁改变的,那就要有      很多的精力用于计算,而这些对于char来说是不需要的。

总的说来:char定长,存储效率不如varchar,对于短数据的查询优于varchar”

参考链接(mysql中char与varchar的区别 哪种字段的查找效率高)

5.从表login中选出name字段包含admin的前10条结果所有信息的sql语句。

解:Select *from login where name like '%admin%' limit 0,10;

6.MySQL中Innodb引擎和MyIASM引擎两种引擎的区别。

解:

InnoDB引擎

InnoDB引擎提供了对数据库ACID事务的支持;
提供了行级锁和外键约束;
不支持FULLTEXT类型的索引(全文索引);
没有保存表的行数,因此当SELECT COUNT(*) FROM TABLE时需要扫描全表;

InnoDB要求表必须要有主键,如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键(这个字段长度为6个字节,类型为长整形)。

MyIASM引擎

不提供对数据库事务的支持,也不支持外键和行级锁;
使用表级锁,所以写操作需要锁定整个表;
支持FULLTEXT类型的索引(全文索引);
MyIASM中存储了表的行数,所以当SELECT COUNT(*) FROM TABLE时只需要直接读取已经保存好的值而不需要进行全表扫描;

表不一定要有主键。

参考链接(InnoDB和MyIASM储存引擎的区别)

7.PHP5中魔术方法函数有哪几个?请举例说明各自的用法。

解:

魔术方法:

__construct() :实例化对象时被调用;

__destuct():当删除一个对象或者对象操作终止是被执行;

__call():调用对象不存在方法时被调用;

__get():调用对象不存在的属性时被调用;

__set():设置对象不存在的属性时被调用;

__toString():打印一个对象时被调用,比如echo $obj,print($obj);

__clone():克隆对象时被调用,比如$t = new Test();$tt = clone $t;

__sleep():serialize之前被调用,若对象比较大,想做一些删除在序列化,可以考虑使用该方法;

__wakeup():unserialize之前被调用,做些对象的初始化;

__isset():检测对象是否存在属性的时候被调用,如 isset($c->name);

__unset():unset一个对象属性时被调用,如:unset($c->name);

__set_state():调用var_export时被调用,用__set_state的返回值作为 var_export的返回值;

__autoload():实例化一个对象时,如果对应的类不存在,在该方法被调用。

魔术常量:

__LINE__:返回当前行号;

__FILE__:返回文件的完整路径和文件名,如果用在包含文件里面,则返回包含文件名,自 php4.0.2后,__FILE__总是包含一个绝对路径,而在此前的版本有时候会包含一个相对路径;

__FUNCTION__:返回函数名称(自 php4.3.0新加的)。自php5起本常量返回该函数被定义时的名称,区分大小写,在php4中该值总是小写;

__CLASS__:返回类的名称,自 php4.3.0新加的,自php5起本常量返回该类被定义时的名称,区分大小写,在php4中该值总是小写的;

__METHOD__:返回类的方法名。 php5新加的

参考链接(PHP5中魔术方法函数有哪几个,请举例说明各自的用法)

8.写一个函数,计算数组中最大数和最小数的差。

解: 这一题的前提应该是数值数组。否则要做很多前提判断。

9.求2个日期的差数,例如2017-01-01~2017-05-06的日期差数。

解:

function($str1,$str2){$temp = explode('-',$str1);$time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);$temp = explode('-', $str2);$time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);return  ($time2-$time1)/86400;
}

10.有一个网页地址,比如PHP开发资源主页:http://www.phpres.com/index.html,如何得到它的内容。


方法1(对于PHP5及更高版本):$readcontents = fopen("http://www.phpres.com/index.html", "rb");$contents = stream_get_contents($readcontents);fclose($readcontents);echo $contents;方法2:echo file_get_contents("http://www.phpres.com/index.html");

11.实现一个函数,将字符串 “hello_world”转换成  "HelloWorld","hello_hang_zhou"转换成“HelloHangZhou”(注意:通用性)。

function strHandle($str){$result='';if(is_string($str)){$arr=explode('_',$str);foreach( $arr as $val){$result.=ucfirst($val);}}else{$result='请输入字符串';}return $result;
}

12.当前系统有个名称 33/look 的目录,请采用广度优先和深度优先2种方式遍历此文件夹。

注:可以参考二叉树的深度优先遍历和广度优先遍历。

深度优先遍历:
function scan_dir($dir) {$files = array();if(@$handle = opendir($dir)) { //注意这里要加一个@,不然会有warning错误提示:)while(($file = readdir($handle)) != = false) {if($file != ".." && $file != ".") { //排除根目录;if(is_dir($dir."/".$file)) { //如果是子文件夹,就进行递归$files[$file] = scan_dir($dir."/".$file);} else { //不然就将文件的名字存入数组;$files[] = $file;}}}closedir($handle);return $files;}
}

广度优先遍历:

队列实现

      function breadth_first_dir($dir) {$files = array();$queue = array();$parentDir=$dir;array_unshift($queue,$dir);while(!empty($queue)){$handle = array_pop($queue);if($handle!=$parentDir){$handle=$parentDir."/".$handle;$parentDir=$handle;}if(is_dir($handle)){if(@$handle = opendir($handle)){while($file = readdir($handle)) != = false){if($file != ".." && $file != ".") {array_unshift($queue,$file);}} }$files[]=$handle; closedir($handle);}else{    $files[]=$handle;    } }return $files;    }

微信扫一扫

2018记一次面试PHP开发岗笔试题相关推荐

  1. 潇洒郎: 去哪儿2021届/2020年开发岗笔试题分享

    去哪儿2021届/2020年开发岗笔试题分享 1. 2020年,直播已经成为去哪儿网酒店预售的新武器, 去哪儿网CEO刚哥想从公司的m名员工中挑选n名参与自己的直播,已知m小于100请问一共有多少种选 ...

  2. 2021唯品会秋招数据开发岗笔试题

    2021唯品会秋招数据开发岗笔试题 题型分布 单选题 多选题 问答题 简答题 由于过了一段时间才写这篇博客,有些题目已经记不清了,同时也没有找到相同的题目,因此只能简单描述,多见谅. 题型分布 单选题 ...

  3. 2022春招——芯动科技FPGA开发岗笔试题(原题以及心得)

    前言: 2022年3月在芯动科技官网投的FPGA岗,当天就过了简历筛选,拿了笔试机会.芯动的题目中规中矩,比较偏向于基础概念题.10道单选题,5道多选题,5道简答题. 目录 前言: 单选题(只记得4道 ...

  4. 网易游戏2019暑期实习开发岗笔试题

    目录 第一题 题意 思路 第二题 题意 思路 第三题 题意 思路 第四题 题意 思路 网易笔试和百度撞车,共有4道编程题,我是听其他答网易的同学说的题意,想了想思路. 第一题 题意 签到题,给出一句话 ...

  5. 2020中兴开发岗笔试题

    题型: 单选14道,多选6道,编程2道. 每个题型做完后才能进入下一个题型. 选择题: 1.对于N个互不相同的哈夫曼编码,若生成的哈夫曼树有35个节点,则N的值是? 2.下面给出的UML图中,显示了类 ...

  6. 【ForOffer】【深信服--测试开发岗笔试题】求最少车费求最低位找马甲找字符串子串

    深信服的整体笔试题难度一般,有多刷题的经验,能立马找出了题意理解,在此,自己只是做个总结发出,有更好的解法的童靴可以一起交流,其实这四道题都是常见题型的一种变形.代码照着搬都是没有问题的哦! 第一题: ...

  7. java iterator如何知道数量_Java开发岗面试题基础篇(二)

    点击蓝字 关注wo们 老哥们,接上篇<Java开发岗面试题--基础篇(一)>,本期推出Java开发岗面试题--基础篇(二),来看看Java中的集合.多线程.异常体系等知识在面试中是怎么体现 ...

  8. 【求职】小米 2018 秋招测试开发工程师笔试题

    小米 2018 秋招测试开发工程师笔试题 一.单选题 1.静态变量static 在不同的实例中地址是否一样?他们储存在什么区域?( ) A. 地址一样,在堆栈区. B. 地址不一样,在堆栈区. C. ...

  9. 华为2018届校招技术岗笔试题及个人解答

    前言 昨天(9.13)参加了华为2018届的技术岗笔试,特此总结一下笔试的题目和我个人的解答思路. 笔试题一共是三道编程题,大致是数值反向输出,比较和排序,相对较基础. PS:由于没有截图,所以题目是 ...

最新文章

  1. LTE - PRACH 时频资源介绍
  2. 13_MFC工具条和状态栏
  3. 《用户至上:用户研究方法与实践(原书第2版)》一 3.4 法律层面的考虑
  4. SQL SERVER 2008过了评估期
  5. 【二分查找】及相关问题
  6. 服务器连接异常系统无法登录,win10系统无法登录LOL提示“服务器连接异常”的解决方法...
  7. 苹果的工作官方检索地址
  8. MATLAB——阈值分割(一)
  9. 添加多个tomcat服务目录
  10. python scipy stats学习笔记
  11. CUDNN学习笔记(2)
  12. 霍金警告人工智能危险性 称其若失控很难被阻止
  13. 在CSDN年收入竟达五位数?----大学生技术自媒体成长之路
  14. 三国演义人物词频统计-4
  15. 如何为PPT加上页码/总页码
  16. 安卓卡片式ViewPager
  17. 大学生当裁缝专做西服 一年收入100万
  18. 移动端避免使用100vh
  19. LeetCode908.最小差值
  20. 欧姆龙EtherCAT通讯及OPC UA功能硫化机程序(plc程序+触摸屏程序)

热门文章

  1. 《电脑爱好者2014年》更新至第24期
  2. 微机原理与计算机接口技术试卷,微机原理及接口技术期末试卷含答案 好
  3. mysql中用来取余数的函数是_MySQL函数 练习题
  4. python练习题(一)
  5. git 删除本地分支
  6. 用C++写一个文件分割器
  7. python autoit打开软件_Python+AutoIt实现界面工具开发
  8. 考注会会经常用计算机吗,注会机考系统计算器你会用吗?操作技巧抢先看!
  9. linux 压缩根目录文件,Linux操作系统下如何压缩文件? zip压缩命令使用
  10. Linux 实用指令 -- 权限管理、crond 任务调度