ホームページ >php教程 >php手册 >PHPプログラマーのインタビュー共有

PHPプログラマーのインタビュー共有

WBOY
WBOYオリジナル
2016-06-21 08:47:561280ブラウズ

インタビュー概要

今日私はPHPプログラマーとして北京の有名なIT企業に面接に行きました。人生で初めてなんで緊張しないの?私は病気ですか?いいえ、これを自信といいます。

まず、筆記試験の問題をいくつか解きます。
1.mysqlデータベースインデックスはどのようなデータ構造を使用していますか?これを行うことでどのようなメリットがあるのでしょうか?
このブログ投稿を参照してください: http://blog.csdn.net/ant_ren/article/details/2932068


2. 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. セッションとクッキーについて簡単に説明します。 Cookie がオフになっている場合、セッションは利用可能ですか?
私が書いたことは比較的単純です:
セッションはサーバー側に保存され、Cookie はクライアント側に保存されます。両者の間には直接的な関係はありません。
他のページにアクセスするため。 PHP_SESSIONID は一時的な Cookie としてブラウザ側に配置されます。
ブラウザがリクエストを行うたびに、ブラウザ自体を識別するために http ヘッダーにセッション ID が組み込まれます。
Cookie が無効になっている場合、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) テーブルの場合、(col1、col2) に複合インデックスがある場合、col1 に単一のインデックスを同時に作成する必要はありません。
(2) クエリ条件で必要な場合は、col1 にすでに単一のインデックスがある場合に、(col1,col2) に複合インデックスを追加できます。これにより、ある程度効率が向上します。
(3) 複数のフィールド (5 つまたは 6 つのフィールドを含む) を含む複合インデックスを同時に作成する利点はあまりありません。比較的、複数の狭いフィールド (1 つだけ、または最大 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 フィールドと名前フィールドにインデックスを作成するとよいでしょう。

単純に書きたいわけではありません。 A4用紙1枚にたくさんの問題が載っています。

これでは、もっとシンプルに書く必要がありませんか?しかし、私はまだいくつかの愚かな間違いを犯しました。それを修正しようとしています。

みんなと共有できるちょっとしたメリット。

ご多幸をお祈りします。





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。