• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php程序员面试分享_php

php 搞代码 7年前 (2018-06-21) 166次浏览 已收录 0个评论

面试总结

今天去了北京著名IT公司进行php程序员的面试。这是人生第一次么,怎么不紧张?我是不是有病。不是,这叫自信呵.

首先是做一些笔试题。
1.mysql数据库索引使用的数据结构?这样做的好处是?
可以参考这篇博文:http://blog.csdn.net/ant_ren/article/details/2932068

http://www.gaodaima.com/51260.htmlphp程序员面试分享_php

2.有两个字符串a和b,判断b字符串是否出现在a中。不考虑大小写。。

我的答案是:使用stripos()这个函数来解决的。

 if(stripos($a,$b)>-1)  echo "b in a"; else  echo "b not in a";

拓展:
但是如果是不考虑顺序的话,问b字符串中的字符是否全部出现在a中。。。
那我们就需要用循环来解决的。下面提供解决方案:

 $b_arr = str_split($b); for(var $i=0,$len = count($b_arr); $i < $len ;  ++$i){  if(stripos($a,$b_arr[$i])==-1)   return false;  return true; }

3.你知道的开源框架?
我按照自己的经验写了一些:
Laravel,PHP,jquery。。。

4.简单解释session 和cookie。关闭cookie,session是否可用?
我写的比较简单:
session存储在服务器端,cookie存储在客户端。两者没有直接的联系。
对于访问其他的页面。PHP_SESSIONID是作为一个临时cookie放在浏览器端的。
每次浏览器发出的请求,都会在http header里 带上 sessionid来标识自己。
如果禁用cookie,那么会自动放在url后面进行传递。

5.数据库优化方案
这个自己在网络上找一下。

6.设计一个Timer类,用来计算程序运行的时间,并且简单的调用它。

 class Timer {   private $StartTime = 0;//程序运行开始时间   private $StopTime = 0;//程序运行结束时间   private $TimeSpent = 0;//程序运行花费时间     function start(){//程序运行开始    $this->StartTime = microtime();   }   function stop(){//程序运行结束    $this->StopTime = microtime();   }   function spent(){//程序运行花费的时间    if ($this->TimeSpent) {     return $this->TimeSpent;    } else {     list($StartMicro, $StartSecond) = explode(" ", $this->StartTime);     list($StopMicro, $StopSecond) = explode(" ", $this->StopTime);     $start = doubleval($StartMicro) + $StartSecond;     $stop = doubleval($StopMicro) + $StopSecond;     $this->TimeSpent = $stop - $start;     return substr($this->TimeSpent,0,8)."秒";//返回获取到的程序运行时间差    }   }  }  $timer = new Timer();  $timer->start();  //...程序运行的代码  $timer->stop();  echo "程序运行时间为:".$timer->spent(); 

下面是简单版的。

 class Timer{  private $t = 0;    public function start(){   $this->t = microtime(true);  }    public function stop(){   return microtime(true)- $this->t;  } }   $time = new Timer(); $time->start(); //do somethings... $t = $time->stop();

7.建立复合索引应该注意的事项。
(1)对一张表来说,如果有一个复合索引 on (col1,col2)就没有必要同时建立一个单索引 on col1。
(2)如果查询条件需要,可以在已有单索引 on col1的情况下,添加复合索引on (col1,col2),对于效率有一定的提高。
(3)同时建立多字段(包含5、6个字段)的复合索引没有特别多的好处,相对而言,建立多个窄字段(仅包含一个,或顶多2个字段)的索引可以达到更好的效率和灵活性。

8.设计一张数据库表。该数据表用来存储经常插入和查询的url数据。
并解释为什么这么设计的原因。

 create table url(  `id` int(11) not null primary key auto_increment comment "主键",  `url` varchar(255) not null comment "url 内容",  `name` varchar(50) comment "url对应的名称" )ENGINE=MyISAM

我是这么建立的。
经常插入和删除,我觉的数据库存储引擎应该使用MyISAM。
如果再在url,name字段上建立一个索引就更好了。

不是我想简单写啊。这么多题目就一张A4纸啊。

这不是逼着我写简单点吗?不过我还是犯了一些低级的错误。我正在努力改正。

一点福利,分享给大家。

Best Wishes.

欢迎大家阅读php程序员面试分享_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php程序员面试分享_php

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址