Praktik terbaik wawancara PHP di Tiongkok
Versi bahasa Inggris (pihak ketiga)
Gudang ini terutama merangkum poin-poin pengetahuan yang sering ditanyakan dalam wawancara PHP domestik. Ini hanya menunjukkan poin-poin pengetahuan secara tepat sasaran, dan Anda perlu mencari informasi yang relevan dan mempelajarinya sendiri secara sistematis. Saya harap Anda dapat memahami tidak hanya apa itu, tetapi juga alasan dan prinsip di baliknya.
Jika Anda memiliki informasi yang sangat sistematis mengenai poin pengetahuan terkait, Anda dipersilakan ke PR untuk menambahkan tautan. Tidak disarankan menggunakan fork, informasi akan diupdate sewaktu-waktu.
Jika saat ini Anda sedang berada dalam situasi berikut, informasi ini sangat cocok untuk Anda:
- Saya berencana untuk berganti pekerjaan, tetapi saya tidak tahu harus mulai dari mana.
- Teknologi ini mengalami hambatan dan saya tidak tahu harus belajar apa.
- Siap belajar PHP, tapi tidak tahu seberapa dalam bidangnya?
Dasar-dasar
- Pahami sebagian besar fungsi manipulasi array
- Perbedaan antara fungsi pemrosesan string dan fungsi seri mb_
- & Kutipan, dikombinasikan dengan analisis kasus
- Perbedaan antara == dan ===
- Perbedaan antara isset dan kosong
- Memahami semua fungsi ajaib
- Perbedaan antara statis, $ini, dan mandiri
- Perbedaan antara privat, dilindungi, publik dan final
- OOP berpikir
- Masing-masing skenario penggunaan kelas abstrak dan antarmuka
- Apa itu Sifat?
- Perbedaan echo, print, dan print_r (membedakan perbedaan ekspresi dan pernyataan)
- Perbedaan antara __construct dan __destruct
- manual fungsi statis (membedakan kelas dan fungsi), SOF
- fungsi __toString()
- Perbedaan antara tanda kutip tunggal
'
dan tanda kutip ganda "
- Kode status HTTP umum, apa maksudnya?
- Apa artinya 301 404?
Bab lanjutan
- Autoload, prinsip Komposer PSR-4, prinsip
- Berbagi sesi, waktu bertahan hidup
- Penanganan pengecualian
- Cara mengulangi objek foreach
- Cara menyusun objek operasi
$obj[key];
- Cara memfungsikan objek
$obj(123);
- Apa itu hasil? Mari kita bicara tentang skenario penggunaan hasil.
- Apa itu PSR, PSR-1, 2, 4, 7
- Cara mendapatkan IP klien dan alamat IP server
- IP klien
- IP server
- Memahami konsep transmisi transparan proxy dari IP sebenarnya
- Cara mengaktifkan permintaan pengecualian PHP
- php.ini mengaktifkan
display_errors
dan menyetel level error_reporting
- Saat runtime, gunakan
ini_set(k, v);
- Cara mengembalikan pengalihan 301
- [PERINGATAN] Berhati-hatilah karena skrip akan terus dijalankan setelah pengaturan 301. Jangan berpikir bahwa yang berikut ini tidak akan dijalankan. Gunakan
die
atau exit
jika perlu.
- Cara mendapatkan jalur instalasi ekstensi
-
phpinfo();
pencarian halaman extension_dir
- Baris perintah
php -i |grep extension_dir
- Waktu proses
echo ini_get('extension_dir');
- Prinsip membandingkan string dan angka. Perhatikan sistem oktal yang dimulai dengan 0 dan sistem heksadesimal yang dimulai dengan 0x.
- Ukuran perbandingan string, dari kiri (bit tinggi) ke kanan, perbandingan karakter demi karakter ASCII
- Apa itu header BOM dan bagaimana cara menghapusnya?
-
0xEF
, 0xBB
, 0xBF
- Deteksi, hapus
- Apa itu MVC
- Prinsip implementasi injeksi ketergantungan
- Cara menjalankan perintah secara asinkron
- Apa itu mesin template, masalah apa yang dipecahkannya, dan prinsip implementasinya (Smarty, Twig, Blade)
- Bagaimana menerapkan operasi rantai
$obj->w()->m()->d();
- Penggunaan alat debugging kinerja Xhprof dan Xdebug
- Apa perbedaan antara array indeks
[1, 2]
dan array asosiatif ['k1'=>1, 'k2'=>2]
- Cara menggunakan cache dan skenario
Praktik
- Diberikan array dua dimensi, urutkan berdasarkan bidang tertentu
- Cara menentukan jenis file yang diupload, seperti: hanya upload jpg yang diperbolehkan
- Tukarkan nilai dua variabel tanpa menggunakan variabel sementara
$a=2; $b=1;
$a=1; $b=2;
- Ada karakter yang kacau di strtoupper saat mengonversi bahasa Mandarin.
php echo strtoupper('ab你好c');
- Perbedaan antara Websocket, Long-Polling, Server-Sent Events (SSE)
- Apa arti kesalahan "Header sudah terkirim" dan bagaimana cara menghindarinya
Algoritma
- Penyortiran cepat (tulisan tangan)
- Penyortiran gelembung (tulisan tangan)
- Pencarian biner (pemahaman)
- Temukan algoritma KMP (mengerti)
- Kedalaman dan keluasan pencarian pertama (mengerti)
- Algoritma penghapusan cache LRU (pahami bahwa Memcached menggunakan algoritma ini)
Struktur data (pemahaman)
- Karakteristik tumpukan dan tumpukan
- antre
- Tabel hash
- daftar tertaut
Perbandingan
- Perbedaan antara Cookie dan Sesi
- Perbedaan antara
GET
dan POST
- Perbedaan antara
include
dan require
- Perbedaan antara
include_once
dan require_once
- Perbedaan antara Memcached dan Redis
- Mesin penyimpanan MySQL dan perbedaannya (Anda pasti akan bertanya tentang perbedaan MyISAM dan Innodb)
- Perbedaan antara HTTP dan HTTPS
- Perbedaan Apache dan Nginx
- Perbedaan antara definisikan() dan konstanta
- Apa perbedaan antara sifat dan antarmuka dan masalah apa saja yang dipecahkan oleh sifat tersebut?
- Perbedaan antara Git dan SVN
Basis data
- MySQL
- MENTAH
- GABUNG, GABUNG KIRI, GABUNG KANAN, GABUNG DALAM
- SERIKAT
- GROUP BY + COUNT + WHERE kasus kombinasi
- Fungsi MySQL yang umum digunakan, seperti: now(), md5(), concat(), uuid(), dll.
-
1:1
, 1:n
, n:n
berlaku untuk setiap skenario - Pahami apa yang dimaksud dengan pemicu dan jelaskan skenario penggunaan
- Metode optimasi basis data
- Indeks, indeks gabungan (kondisi hit)
- Subdatabase dan subtabel (
水平分表
dan垂直分表
) - Partisi
- Dapat menggunakan
explain
untuk menganalisis masalah kinerja SQL dan memahami arti setiap parameter- Fokus pada pemahaman
type
, rows
, key
- Slow Log (untuk apa, kapan dibutuhkan)
- MSSQL (mengerti)
- NOSQL
- Redis, Memcached, MongoDB
- Perbandingan dan skenario yang berlaku (perbandingan dapat dilakukan dari dimensi berikut)
- kegigihan
- Mendukung banyak tipe data
- CPU multi-core tersedia
- Mekanisme penghapusan memori
- ClusterCluster
- Mendukung SQL
- Perbandingan kinerja
- masalah dukungan
- Skenario aplikasi
- Apa yang Anda gunakan untuk menyelesaikan masalah sebelumnya, dan mengapa Anda memilihnya?
pelayan
- Lihat informasi seperti CPU, memori, waktu, versi sistem, dll.
- temukan, grep untuk menemukan file
- awk memproses teks
- Lihat direktori tempat perintah berada
- Pernahkah Anda mengkompilasi PHP sendiri? Cara mengaktifkan fungsi readline
- Cara memeriksa penggunaan memori dan CPU pada proses PHP
- Bagaimana cara menambahkan ekstensi ke PHP
- Ubah lokasi penyimpanan Sesi PHP dan ubah parameter konfigurasi INI
- Apa saja jenis penyeimbangan beban? Pilih salah satu yang Anda kenal dan jelaskan prinsipnya.
- Bagaimana replikasi database master-slave MS disinkronkan? Dorong atau tarik? Apakah akan tidak sinkron? apa yang harus dilakukan
- Bagaimana memastikan ketersediaan data agar meski terhapus, bisa dikembalikan ke level menit. apa yang akan kamu lakukan.
- Ada terlalu banyak koneksi database, melebihi nilai maksimum. Cara mengoptimalkan arsitektur. Bagaimana cara memprosesnya dengan mudah?
- 502 Apa kemungkinan alasannya? Bagaimana cara mengatasi masalah 504?
Arsitektur
- Pengoperasian dan pemeliharaan sebagian (pemahaman):
- Penyeimbangan beban (Nginx, HAProxy, DNS)
- Replikasi master-slave (MySQL, Redis)
- Redundansi dan pencadangan data (prinsip inkremental dan penuh MySQL)
- Pemantauan dan inspeksi (dua dimensi kelangsungan hidup dan ketersediaan layanan)
- MySQL, Redis, Proxy Memcached, Tujuan dan prinsip cluster
- Pembagian
- Kluster ketersediaan tinggi
- SERANGAN
- Kompilasi kode sumber, penyetelan memori
- cache
- Setiap kali Anda menghadapi situasi di mana penyimpanan cache diperlukan di tempat kerja, jelaskan alasannya secara singkat.
- Solusi pencarian
- Penyetelan kinerja
- Solusi pemantauan dalam berbagai dimensi
- Solusi pemrosesan terpusat pengumpulan log
- internasionalisasi
- Desain basis data
- solusi statis
- Gambarlah diagram arsitektur aplikasi PHP yang umum
Kerangka
- ThinkPHP (TP), CodeIgniter (CI), Zend (seri non-OOP)
- Yaf, Phalcon (ekstensi C)
- Yii, Laravel, Symfony (seri OOP murni)
- Swoole, Workerman (kerangka pemrograman jaringan)
- Kerangka perbandingan membedakan beberapa titik arah
- Apakah itu OOP murni?
- Metode pemuatan perpustakaan kelas (tulis autoload Anda sendiri vs. standar komposer)
- Arah kegunaan (kerangka dasar CI, Laravel adalah kerangka kerja dengan efisiensi pengembangan tinggi dan berapa banyak komponen dasar yang ada)
- Kotak hitam (dibandingkan dengan sistem ekstensi C)
- Kecepatan berlari (misal: Laravel memuat banyak hal)
- Penggunaan memori
pola desain
- Pola tunggal (penekanan)
- Pola pabrik (kunci)
- Pola pengamat (penekanan)
- Injeksi ketergantungan (penekanan)
- Pola dekorator
- mode proksi
- Modus kombinasi
Keamanan
- injeksi SQL
- XSS dan CSRF
- Pemfilteran masukan
- Keamanan kue
- Nonaktifkan fungsi
mysql_
- Saat menyimpan kata sandi pengguna di database, apa yang harus dilakukan untuk menjamin keamanan?
- Kode verifikasi Masalah sesi
- Amankan ID Sesi (sehingga bahkan setelah intersepsi, tidak dapat disimulasikan dan digunakan)
- Keamanan izin direktori
- Berisi file lokal dan jarak jauh
- Unggah file skrip PHP
- fungsi
eval
mengeksekusi skrip -
disable_functions
mematikan fungsi berisiko tinggi - Pengguna dan grup independen FPM, memberikan izin khusus untuk setiap direktori
- Pahami perbedaan antara Hash dan Enkripsi
Tingkat lanjutan
- Implementasi dasar array PHP (HashTable + Daftar tertaut)
- Salin prinsip tulis, kapan ke GC
- Model proses PHP, metode komunikasi proses, perbedaan thread proses
- Apa prinsip inti hasil?
- Prinsip persiapan PDO
- Apa perbedaan antara PHP 7 dan PHP 5
- Swoole skenario yang berlaku dan metode implementasi coroutine
ujung depan
- Dapatkan node dan atribut DOM secara asli
- model kotak
- File CSS, tag gaya, prioritas atribut gaya sebaris
- Urutan berjalan HTML dan JS (halaman JS dari atas ke bawah)
- Operasi susunan JS
- Ketik penilaian
- ruang lingkup ini
- .map() dan analisis skenario penggunaan khusus ini
- Membaca dan menulis kue
- Operasi JQuery
- Permintaan Ajax (perbedaan antara nomor acak sinkron dan asinkron) melarang caching
- Apa manfaat Bootstrap?
- Solusi N permintaan lintas domain
- Teknologi baru (memahami)
- ES6
- Modular
- Mengemas
- Membangun alat
- vue, reaksi, webpack,
- frontendmvc
- optimasi
- Batas jumlah browser bersamaan untuk satu nama domain
- Cache sumber daya statis 304 (prinsip Jika-Dimodifikasi-Sejak dan Etag)
- Gabungkan beberapa ikon kecil dan gunakan teknologi penentuan posisi untuk mengurangi permintaan
- Sumber daya statis digabungkan menjadi satu permintaan dan dikompresi
- CDN
- Sumber daya statis menunda teknologi pemuatan dan teknologi pramuat
- tetap hidup
- Optimasi CSS di bagian kepala dan JS di bagian ekor (prinsip)
Jaringan
- Alamat IP ke INT
- Apa maksudnya 192.168.0.1/16?
- Apa fungsi utama DNS?
- Perbedaan antara IPv4 dan v6
Pemrograman Jaringan
- Proses jabat tangan tiga arah TCP
- Perbedaan antara TCP dan UDP, masing-masing skenario yang berlaku
- Apakah ada cara untuk memastikan ketersediaan tinggi UDP (mengerti)
- Bagaimana cara mengatasi paket lengket TCP?
- Mengapa detak jantung dibutuhkan?
- Apa itu koneksi panjang?
- Bagaimana HTTPS aman?
- Perbedaan antara stream dan datagram
- Ada beberapa cara untuk berkomunikasi antar proses, mana yang paling cepat?
- Apa yang terjadi
fork()
?
bab API
- Apa itu RESTful
- Cara membuat permintaan
DELETE
kompatibel dengan browser yang tidak mendukung permintaan DELETE
- Apa fungsi utama
APP_ID
APP_SECRET
dari API umum? Jelaskan prosesnya - Bagaimana cara memastikan bahwa data dalam permintaan API tidak dirusak?
- Perbedaan antara JSON dan JSONP
- Perbedaan antara enkripsi data dan verifikasi tanda tangan
- Apa itu RSA
- Cara menangani kompatibilitas versi API
- Pembatas arus (ember kayu, ember token)
- Dalam skenario apa OAuth 2 terutama digunakan?
- JWT
- Apa perbedaan antara
json_encode(['key'=>123]);
dan return json_encode([]);
masalah apa yang akan terjadi? Bagaimana cara mengatasinya
Poin bonus
- Memahami fitur bahasa umum dan penerapannya pada berbagai skenario.
- PHP VS Golang
- PHP VS Python
- PHP VS JAWA
- Pelajari tentang pengembangan ekstensi PHP
- Mahir dalam C
penyataan
Informasi ini tidak menargetkan perusahaan mana pun, dan kami tidak bertanggung jawab atas dampak informasi ini terhadap Anda.
Semoga beruntung
Referensi terkait
https://blog.csdn.net/l269798518/article/details/82428601