面试总结

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

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

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存储在server端,cookie存储在client。

两者没有直接的联系。

对于訪问其它的页面。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程序猿面试分享的更多相关文章

  1. HR筒子说:程序猿面试那点事(转)

    小屁孩曾经有过4年的招聘经验,期间见识了各种类型的程序猿:有大牛.有菜牛:有功成名就,有苦苦挣扎不知方向.等后来做了一枚程序猿之后发现,HR眼中的程序猿和程序猿中的HR都是不一样的.有感与此,从HR的 ...

  2. HR筒子说:程序猿面试那点事

    小屁孩曾经有过4年的招聘经验,期间见识了各种类型的程序猿:有大牛.有菜牛:有功成名就,有苦苦挣扎不知方向.等后来做了一枚程序猿之后发现,HR眼中的程序猿和程序猿中的HR都是不一样的.有感与此,从HR的 ...

  3. 《Java程序猿面试笔试宝典》之Java与C/C++有什么异同

    Java与C++都是面向对象语言,都使用了面向对象思想(比如封装.继承.多态等),因为面向对象有很多非常好的特性(继承.组合等),使得二者都有非常好的可重用性. 须要注意的是,二者并不是全然一样,以下 ...

  4. leetcode:程序猿面试技巧

    起因 写在开头,脑袋铁定秀逗了,历时20多天,刷完了leetcode上面151道题目(当然非常多是google的),感觉自己对算法和数据结构算是入门了,但仍然还有非常多不清楚的地方,于是有了对于每道题 ...

  5. 《Java程序猿面试笔试宝典》之组合与继承有什么差别

    组合和继承是面向对象中两种代码复用的方式. 组合是指在新类里面创建原有类的对象,反复利用已有类的功能.继承是面向对象的主要特性之中的一个,它同意设计人员依据其他类的实现来定义一个类的实现. 组合和继承 ...

  6. 《Java程序猿面试笔试宝典》之Java程序初始化的顺序是如何的

    在Java语言中.当实例化对象时.对象所在类的全部成员变量首先要进行初始化,仅仅有当全部类成员完毕初始化后,才会调用对象所在类的构造函数创建对象.    Java程序的初始化一般遵循以下三个原则(以下 ...

  7. 《Java程序猿面试笔试宝典》之 什么是AOP

    AOP(Aspect-Oriented Programming.面向切面编程)是对面向对象开发的一种补充,它同意开发者在不改变原来模型的基础上动态地改动模型从而满足新的需求.比如.在不改变原来业务逻辑 ...

  8. GEEK学习笔记— —程序猿面试宝典笔记(二)

    所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...

  9. GEEK学习笔记— —程序猿面试宝典笔记(三)

    所谓笔记,就是比較个人的东西,把个人认为有点意思的东西记录下来~~ 程序猿面试宝典笔记(一)基本概念 程序猿面试宝典笔记(二)预处理.const和sizeof 程序猿面试宝典笔记(三)auto_ptr ...

随机推荐

  1. 仿迅雷播放器教程 -- 基于VLC的C++播放器 (4)

    经过前面的介绍,想必大家对VLC和ffmpeg都有一定印象了,还记得学习ffmpeg多么蛋疼吗?那么VLC会不会也这么蛋疼呢?     那么我们来看一段官方的Demo,Alberl精简了Demo,只留 ...

  2. a or an

    在英语句子中用a还是用an,一直是个容易出错的问题. 原则为:如果下一个词的发音为元音则用an,否则用a. 例: a man an elephant a house an hour 对于大写字母要注意 ...

  3. nginx负载均衡(反向代理)

    6,安装nginx 6.1 依赖库安装  要安装在root根目录里,不要装在虚拟环境里面 yum install gcc-c++ pcre pcre-devel zlib zlib-devel ope ...

  4. python3之编码详解

    一,python2与python3的区别 1)python2可以不用括号() python3必须加括号 2)python2中有range()有序列表,xrange()生成器 python3中只有ran ...

  5. Inotify+rsync实现实时数据同步

    使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...

  6. HDU 5542 - The Battle of Chibi - [离散化+树状数组优化DP]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5542 Problem DescriptionCao Cao made up a big army an ...

  7. Vue 数据响应式原理

    Vue 数据响应式原理 Vue.js 的核心包括一套“响应式系统”.“响应式”,是指当数据改变后,Vue 会通知到使用该数据的代码.例如,视图渲染中使用了数据,数据改变后,视图也会自动更新. 举个简单 ...

  8. arcgis10.4 server第一次发布地图报错:We were unable to connect to...Error:Proxy server got bad address...

    arcgis 10.4发布地图跟10.2不一样.server url里的http要改为https,否则就会连接不上.

  9. 用SignalTap进行硬件仿真

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  10. wpf中通过ObjectDataProvider实现文本框的双向数据绑定(ps:适用于在文本框比较多的时候使用)

    前端代码: 也页面的xaml中引入ObjectDataProvider: <Window.Resources> <ResourceDictionary> <ObjectD ...