ホームページ  >  記事  >  バックエンド開発  >  これは、シナ・レジュの面接の質問と私の回答、そして筆記試験の質問に対するいくつかの提案であると言われています。

これは、シナ・レジュの面接の質問と私の回答、そして筆記試験の質問に対するいくつかの提案であると言われています。

WBOY
WBOYオリジナル
2016-07-29 08:56:101105ブラウズ
1.
1. 次の HTML があります:
1) js を使用してオブジェクトを取得します。 ;
2) ________ 属性を使用して属性 title の属性値を取得します。
3) ________ メソッドを使用して属性 sina_title の属性値を取得します
(1) document.getElementById(' img1');
(2) document.getElementById('img1').getAttribute('title');
(3) document.getElementById('img1').getAttribute('sina_title');
2. PHP での配列のペア シリアル化関数と逆シリアル化関数はそれぞれ
serialize、upserialize
3 の違いは
rawurlencode はスペースを +、urlencode に変換します。スペースを %20 に変換します
4. PHP で HTML をフィルタリングする関数は _______ で、エスケープ関数は
strip_tags,htmlspecialchars
5. スクリプトは次のとおりです。フィルターで除外;
preg_replace('//is','',$htmlcode);
6. SQL における LEFT JOIN の意味は
If There学生 ID と名前を格納するテーブル tl_user と、学生 ID、科目、スコアを格納する別のテーブル tl_score (一部の学生はテストのスコアを持っていません) 学生の名前と各科目の合計スコアを出力する SQL ステートメントを作成します。
左結合は、まず左側のテーブルからすべてのデータを取得し、次に、where 条件を満たす右側のテーブルからデータを取得します。この行のデータが where 条件を満たさない場合、空が返されます。
select tu.name,sum(ts.score) as totalscore from tl.user left join tl_score on tl.uid = ts.uid;
7. システムコマンドを呼び出す 3 つの関数を作成します。
system、passthru、exec
8. 配列を処理するための Josn の関数は次のとおりです。変数が設定されているかどうかを確認します。 PHP 空かどうかを判断する関数は
isset, empty
10 です。 前者はエラー表示レベルを設定するもので、E_ALLはすべてのエラー(通知、警告、エラーを含む)を促すことを意味します。エラー表示制御では後者が最も優先されます。
11. PHP は、クライアント IP を表示する事前定義変数 _________ を書き込みます。ソース URL は
$_SERVER['REMOTE_ADDR'],$_SERVER['HTTP_REFERER']
12 によって提供されます。 PHP が UTF-8 を gbk に変換するために使用する関数は
iconv('UTF-8','GBK',$str);
13 です。PHP で文字列を配列に分割する関数です。数値を結合します。文字列を形成するには、_______;
explode,implode
14. PHP でクラスの静的メソッドを使用する方法
クラスの外で、次のメソッドを使用します。 classname::staticFucntion() と同様の名前。静的メソッドはオブジェクトではなくクラス全体に属するため、クラス名を使用して呼び出す必要があります。
2.
1. mysql サーバーが消えないというエラーの原因は何ですか? (これはおそらくそうなのでしょう)
mysql が消えてしまったはずですよね?
通常、これは max_allowed_pa​​cket で設定された値が小さすぎることが原因で、場合によってはバッファーのパケット サイズを制御するために使用されます。データをインポートする際、この値が小さすぎるとバッファ容量不足が発生しやすくなります。 my.ini または my.cnf のこの値を大きく設定すると、問題を解決できる可能性があります。
もう 1 つの可能性は、データベースに接続するときにシングルトン モードが使用されることです。データベースは複数回操作されますが、同じ接続が使用されます。これは、mysql が各スレッドをキュー モードで処理するため、現在の操作が完了していないためです。この問題は、wait_timeout で設定した値が高すぎる場合に発生しやすくなります。解決策は、wait_timeout の値を大きく設定することです。
2. mysql の静的テーブルと動的テーブルの違い、および MyISAM と InnoDB の違い
テーブルが varchar、blob、text などの可変長フィールドを使用しない場合、静的テーブルは静的です。一方、テーブルに少なくとも 1 つの可変長フィールドが含まれている場合、またはテーブルが ROW_FORMAT=DYNAMIC オプションを使用して作成されている場合、そのテーブルは動的テーブルです。
myisam と innodb の違いは、myisam はコミット操作を行う必要がないため、トランザクション処理をサポートしていないため、操作速度が innodb よりも高速になることです。 innodb は、トランザクション処理、挿入、更新、削除、選択をサポートしているため、セキュリティの点で myisam よりも優れています。操作のデフォルトが autocommit=0 の場合、各操作はトランザクションとして扱われ、ロールバックできます。autocommit=1 の場合、各操作の後にトランザクションが自動的にコミットされるため、実行効率が非常に遅くなり、おそらく myisam の 10 倍遅くなります。
3, $a = 1; $b = & $a;
unset($a)、$b は 1 のままですが、なぜですか?
unset($b)、$a は 1 のままですか?
はすべて1に等しい。
PHP では、参照割り当てはポインタとは異なり、別の変数名を特定のメモリ アドレスに指すだけです。この質問では、 $b = &$a; という名前は、$a 変数が指すメモリ アドレスを指すだけです。設定を解除すると、この名前へのポインタのみが解放され、メモリ内の値は解放されません。一方、unset($a) は、実際にはメモリ内の値をすぐに解放しません。この関数は、変数値が占有する領域が 256 バイトを超えた場合にのみ値を解放します。メモリは解放され、アドレスは、値を指すすべての変数 (値を指す参照変数など) が破棄された場合にのみ解放されます。
3.
1. 少なくとも 3 つの関数を記述し、ファイル '/as/image/bc.jpg' などのファイル名の接尾辞を取得し、jpg または .jpg を取得します。
function myGetExtName1( $path ){
//この文字のインデックス位置を取得します
$begin = strrpos($path,'.');
//全体を取得しますstring Length
$end = strlen($path);
//最後の のインデックスから文字列の全長を切り取った結果
return $begin?substr($path,$ begin,$end):'ファイルには拡張子がありません';
}
function myGetExtName2($path){
return preg_match_all('/.[^.]+/is',$path,$ m)?$m[0][count($m[0])-1]:'ファイルには拡張子がありません';
}
function myGetExtName3( $path ){
// last . 文字の出現のインデックス位置とそれに続くすべての文字が一緒に返されます
return strrchr($path,'.')?strrchr($path,'.'):'ファイルには拡張子がありません';
}
2. $a = '/a/b/c/d/e.php'; などの 2 つのファイルの相対パスを計算する関数を作成します。 12/34/ c.php'; $a に対する $b の位相パスを計算します。
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
//$ を要求するb $a からの相対パス
function getRelativelyPath($a,$b){
//配列に分割
$a =explode('/',$a);
$b =explode('/',$b);
$path = '';
//2つの配列のインデックスをリセットします
$c = array_values(array_diff($a,$b)) ;
$d = array_values(array_diff($b,$a));

//パスのファイル名を削除
array_pop($c);
//置換を置換..
foreach($c as &$v) $v = '..';

//2つの配列をマージ
$e = array_merge($ c ,$d);
//パスの接続
foreach($e as &$v)
$path .= $v.'/';
return rtrim($path,'/ ' );
}
3. バイナリ メソッド (半減検索メソッドとも呼ばれる) を使用して、オブジェクトは順序付けされた配列にすることができます。
//配列に特定の値が存在するかどうかを調べるバイナリメソッド
function binSearchWithArray($array,$searchValue){
global $time;
if(count($array)>= 1) {
$mid = intval(count($array)/2);

echo 'th',$time++,'time
';

echo '現在の配列: ';print_r($array);echo '
';


echo '位置インデックスの検索:',$mid,'
';

echo '値:',$array[$mid],'

';

if($searchValue == $array[$mid]){
$time-- ;
return $searchValue.' が見つかりました。'.$time.' 回目のインデックスは '.$mid.'
';

}
elseif($ searchValue < ; $array[$mid]){
$array = array_slice($array,0,$mid);
return binSearchWithArray($array,$searchValue);
}
else{
$array = array_slice($array,$mid+1,count($array));
return binSearchWithArray($array,$searchValue);
}
}
return $searchValue .' 見つかりません ,50,60,199,35);
//見つける値
$searchValue = 13;
//二分法のキーである配列をソートします
sort($array );
echo '検索する値は次のとおりです:',$searchValue,'

';

echo binSearchWithArray($array,$searchValue);

これらの質問は、正直に言うと難しいことではありませんが、IDE の助けがなければ書き方を思い出せない関数がたくさんあるため、いくつかの質問について情報を調べたことを認めなければなりません。たとえ以前に知っていて理解していた概念であっても、長い間触れていないと徐々に忘れてしまいます。
面接中にペンで書くように求められますが、これを短時間でペンで書ける人はほとんどいないと思います。特に後からコードを書く人は何度も修正する必要があります。ロジックには間違いなく抜け穴がいくつかあります。何が間違っていたのかを理解するには、コードを実行する必要があります。それをペンで書き留めるのは非常にナンセンスです。コンピュータで書いたとしても、以下のコードの一部を書くのに 2 ~ 3 時間かかりました。
面接の筆記試験の質問は本当に疑問が残ります。そう感じているのは私だけではないはずですよね。前回テンセントに面接に行ったとき、筆記試験の質問に困惑しました。到着したときは頭が真っ白で、家に帰ってからゆっくりと質問を思い出してみると、すべて書けることに気づきました。
皆さん、私の回答を見て、漏れや間違いがないか確認してください。私はこれらのテストを受ける価値はないと思います。面接で筆記試験の質問として使用するのは不適切だと思います。さまざまな企業で面接を受けている皆さんは、私の意見を参考にして、より合理的な評価方法に変えていただければ幸いです。

元のアドレス: http://bbs.csdn.net/topics/340149214
上記は、Sina Leju によるとされる面接の質問、私の回答、および筆記試験の質問に対するいくつかの提案を内容を含めて紹介したもので、PHP チュートリアルに興味のある友人に役立つことを願っています。

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