alonli 发表于 2015-8-28 07:04:07

php 面试 本人碰到过的问题 在此做下记录

  持续更新,大家有好的题目也希望拿出来晒一下或者有更好的解释或者方法请留下脚印 Y(^_^)Y
  另外请大家注意 本文中的答案仅供参考(错了大家可以提出来)
  代码优化




for($i=0;$i<8;$i++){
   array_push($week,$arr[$i]);
}


for($i=0;$i<8;$i++){
$week[]=$arr[$i];
}
//这样就没有了调用函数的额外负担

  建立索引的好处和坏处


答案



好处:查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数
坏处:无论如何都要查询此表,字段大量重复值,增加索引也没有什么意义
记录比较少的,增加索引不会带来速度的优化反而浪费了存储空间,因为索引是需要存 储空间的,而且有个致命缺点是对于update|insert|delete的每次执行,字段的索引都必须重新计算更新
相关文章连接地址:http://xdeduzb.blog.163.com/blog/static/81993637201111044846169/
  我们碰到了大麻烦,一个新来的传教士惹恼了上帝,上帝很愤怒,要求我们把圣经(bbe.txt)背熟,直至他说哪个单词,我们就要飞快的回答出这个单词在第几行第几个单词位置。听说你是个优秀的程序员,那么髟助我们完成这个不可能的任务吧 (注:bbe.txt 请大家自己建立一个吧,呵呵 )
  

答案代码



function find($word)
{
$fp = fopen('bbe.txt','r');
$ln = $col = array();
$i = 1;
while(!feof($fp))
{
    $data = fgets($fp);
    if (preg_match_all('/(\s)*'.$word.'(\s)+/',$data,$match))
    {
      $num = count($match);
      if( $num == 1)
      {
      $ln[] = $i;
      $col[] = stripos($data, $word);
      } else {
      $start = 0;
      for ($j=0;$j<$num;$j++){
          $ln[] =$i;
          $start =$col[] = stripos($data,$word,$start);
          $start++;
      }
      }
    }
    $i++;
}
fclose($fp);
$xy = array();
for($k=0;$k<count($ln);$k++){
    $xy[] = $ln[$k].','.$col[$k];
}
print_r($xy);
}
find('let');

  zz
页: [1]
查看完整版本: php 面试 本人碰到过的问题 在此做下记录