このインタビューは、新たな旅を始めて世界を理解することだけでなく、自分自身の欠点を発見するプロセスであり、将来の発展(学習)の方向性を決定する機会でもあることを願っています。 (添付: 面接知識ポイントのマインドマップ)
関連おすすめ: 「2019 PHP 面接質問まとめ (集)」
PHP
#php は世界で最高の言語です。反論は受け付けません!
1. 基本
1. セッションと cookie の違い
セッションはサーバーに保存され、ユーザーを追跡するために使用されるデータ構造です。
ステータスに応じて、このデータはクラスター、データベース、およびファイルに保存できます。
Cookie は、クライアントがユーザー情報を保存するためのメカニズムです。一部のユーザー情報を記録するために使用され、セッションの実装にも使用されます。 方法。
2, PHP7 を使用して新機能について学習しましたか?
PHP7 は、パフォーマンス、新しい演算子、統一された変数構文などにおいて飛躍的な向上を達成しました。
3 , Magic変数
# __dir__ の意味について質問されました。これは、応答ファイルが配置されているディレクトリです。
4、マジック メソッド
これはよく聞かれる質問です。覚えています。よく使われるものですが、突然 __invoke()
__construct(), __destruct(), __call(), __callStatic() について聞かれて戸惑いました。
、__get()、__set()、__isset()、__unset()、__sleep()、__wakeup()、
__toString()、__invoke()、__set_state()、__clone()、__debugInfo()
2. データ構造とアルゴリズム
1、スタック データ構造
コードを使用してポップ データ構造を実装できる限り、
2、バブル ソート
コードを使用してバブル ソートを実装できる限り、
3.完全なバイナリ ツリーと完全なバイナリ ツリーの違い
下の 2 つのレベルのノード次数のみ 2 未満にすることができ、最下位レベルのノードはレベルの左端に集中します。
特定の位置にある二分木は完全な二分木です
そして、深さが h で 2^h-1 個のノードを持つ二分木は次のようになります。
完全なバイナリ ツリー
3. アーキテクチャ関連
1. Laravel と ThinkPHP の違いは何ですか? laravel について何を不満に思いますか?
ルーティングから始めました。ミドルウェアからコントローラー、データアクセス、ビューなどのさまざまなレベルが紹介されています
不満を言いたい場合は、laravel は一部のプロジェクトと比較して少し「重い」かもしれません
2、 Composer を使用して独自のパッケージをリリースしたことがありますか? ( Composer に基づいた PHP モジュラー開発)
私は「いいえ」と答えました。ちょうどそれについて学びました
インタビュアーは、フレームワークは独自のものだと言いました。
Discuz をベースにした二次開発フレームワーク。その優れた基盤に基づいて、コンポーザーの依存関係管理も blabla
3 に導入されています。プロジェクト記述テンプレートとビューと組み合わせた MVC
の理解について話しましょう、コントローラー間の関係と基本構成
4. 保護
1. XSS クロスサイト スクリプティング攻撃
2. DDOS トラフィック攻撃
3 、CSRF
クロスサイト リクエスト フォージェリ攻撃
4、SQL インジェクション
フロントエンド フォームでのユーザー入力を制御または制限する
バックエンド パラメーターや渡されるデータがある場合のフィルターなど
5. プロジェクト
1、プロジェクトの同時実行性の問題を解決する方法
私の解決策は、まずフロントエンドで有効なリクエストを制御することです。たとえば、通常のリクエストは 1 分あたり 1 つだけです。
また、バックエンドは無効なリクエストをフィルタリングし、その操作をキューに入れて実装します
私は「いいえ」と言いましたが、彼は「はい」と言いました
ロック メカニズムを使用して、2 番目のページは最初のページが完了するまで順番に待機します。
2. 統合注文 API を呼び出して、前払い注文を生成します## 3.
JSAPI ページによって呼び出される支払いパラメータを生成し、署名します。
4. WeChat ブラウザは自動的に支払いを有効にします。
JSAPIインターフェース支払い
5. 支払い確認
6. 非同期通信
加盟店に決済結果を通知すると、加盟店は通知を受け取り、確認メッセージを返信します。
7. 決済結果を返信し、表示します。
ユーザーに支払い情報を表示します
3、ログインと登録機能を実装するだけです
各フレームワークは異なる側面を考慮しているため、独自の理解に従って対応するコードを記述するだけです
4、方法モールを設計するために、
まず B2C モールに限定し、次にデータ テーブルから始めて、その後は単純に
フロントエンドとバックエンドの実装ロジックの紹介
MYSQL Mysql の最適化は基本的に最優先事項であり、特にテスト技術です 1、InnoDB と MyISAM の違いは何ですか? InnoDB トランザクション処理、行レベルのロック、外部キーのサポート、および複数の行フォーマットのサポート 2、特徴は何ですかトランザクション 原子性、一貫性、分離、耐久性 非コミット読み取り、コミット読み取り、反復可能読み取り、シリアル化可能 4、テーブルがありますO_Id、OrderDate、OrderPrice、Customer のフィールドで、注文の合計を見つけたいと考えています。
金額が 2000 5 未満の顧客は、student テーブルのデータをクエリします。60 を超える顧客は合格します。それ以外の場合は不合格です。 スコアを選択、カテゴリ=ケース 6、すべてのコースを完了していない学生の学生番号と名前をクエリします 2最適化 1, "select * from students where name='red'","select *
from Student where name='blue'", optimize ステートメント or 条件を使用すると、myisam テーブルはインデックスを使用できますが、innodb は使用できません。
2、一般的にデータベースを最適化するにはどうすればよいですか クエリ キャッシュ、EXPLAIN、(ジョイント) インデックス、固定を使用します長さ 静的テーブル #サーバー サーバーを保護する方法 限られたポートのみを開き、ログイン IP を制限し、ログイン アカウントを制限する これは本にまとめられる質問でもあり、答えることができます。プロジェクトによると ##Get と Post の違いは何ですか## Get のパラメータは URL に含まれます。 GET リクエストはブラウザによってアクティブにキャッシュされ、URL エンコードされます。
パラメーターには ASCII 文字の文字制限があります。 3. NginX nginx を設定する際の php スクリプトリクエストの処理方法デフォルト設定では、FastCGI に転送されます。処理 4. Redis 1. Redis をキャッシュに使用するデータは何ですか? プロジェクトによると、使用するデータ 2. Redis で永続性を実現する方法と構成する更新頻度 aof 永続性を構成し、デフォルトで 1 秒ごとに aof ファイルを更新します 3. Redis はマルチスレッドですか? 公式のクラスター計画は実際には実装されておらず、実装には数週間かかる場合があります。
完全 #5. コード管理 #Others #1. 仕事を辞めた理由 2. 理想的なチーム テクノロジーに情熱を持ち、問題を積極的に解決し、協力して働くことができます 3.キャリア プランニング 4. 尋ねたい質問 企業が違えば、技術スタックや懸念事項も異なり、ブロッキングの問題に対する具体的な解決策について尋ねられることもあります。
、プロジェクトの効率にもっと注意を払う人もいますし、サーバーの構築、独自のフレームワークを構築しているかどうか、および人気のあるフレームワークの理解にも注意を払う人もいます。
のプロセスで、希望する開発の方向性が見つかるかもしれません。
#追記 5 日間で 9 社から 7 件の内定を獲得しました。かなり良い感じです。面接では、ほとんどの企業が履歴書の項目に基づいて詳細な質問をします。
同時に、テクノロジーの幅広さ(経験したプロジェクトやスキルの数)とテクノロジーの深さ(データ最適化、フレームワークの理解と制作、サービス)もわかります。
サーバーの攻撃と防御の侵入)、プロジェクトの発展に合わせて、皆さんが引き続き練習し、テクノロジーを学習できることを願っています。 \(•ㅂ•)/♥お互い励まし合いましょう
~ 添付: 面接の知識ポイントのマインド マップ
1. 基本
MyISAM はテーブル レベルのロック、フルテキスト インデックス、およびヒープ テーブルのみをサポートします
3、トランザクション分離レベル SELECT Customer,SUM(OrderPrice) FROM
Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
スコアのとき
>=60 THEN '合格'
ELSE '不合格
'
END
成績リストから SELECT a.SNO ,a.SNAME
FROM student a
WHERE a.`SNO` NOT IN
( SELECT b.`SNO` FROM SC b
GROUP BY b.`SNO` HAVING COUNT(*) =
( SELECT COUNT(*) FROM course)
);
select name from student where
name='red'
union
select
name from student where name='blue'
innodb は OR を UNION に置き換えます (インデックス列に適用可能) お金は減り、仕事は増えましたが、はるかに遠いです。離れて