찾다
php教程php手册php程序员面试分享

面试总结

今天去了北京著名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存储在服务器端,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.





성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.