แนวทางปฏิบัติที่ดีที่สุดในการสัมภาษณ์ PHP ในประเทศจีน
เวอร์ชันภาษาอังกฤษ (บุคคลที่สาม)
คลังข้อมูลนี้สรุปประเด็นความรู้ที่มักถูกถามในการสัมภาษณ์ PHP ในประเทศเป็นหลัก เพียงชี้ให้เห็นจุดความรู้ในลักษณะที่ตรงเป้าหมายและคุณจำเป็นต้องค้นหาข้อมูลที่เกี่ยวข้องและศึกษาอย่างเป็นระบบด้วยตัวเอง ฉันหวังว่าคุณจะเข้าใจไม่เพียงแต่ว่ามันคืออะไร แต่ยังรวมถึงเหตุผลและหลักการที่อยู่เบื้องหลังด้วย
หากคุณมีข้อมูลที่เป็นระบบเกี่ยวกับประเด็นความรู้ที่เกี่ยวข้อง คุณสามารถ PR เพื่อเพิ่มลิงก์ได้ ไม่แนะนำให้คุณใช้ fork ข้อมูลจะได้รับการอัปเดตตลอดเวลา
หากขณะนี้คุณอยู่ในสถานการณ์ต่อไปนี้ ข้อมูลนี้เหมาะสำหรับคุณมาก:
- ฉันวางแผนที่จะเปลี่ยนงาน แต่ฉันไม่รู้ว่าจะเริ่มจากตรงไหน
- เทคโนโลยีพบปัญหาคอขวด และฉันไม่รู้จะเรียนรู้อะไร
- พร้อมเรียนรู้ PHP แต่ไม่รู้ว่าความรู้ลึกซึ้งแค่ไหน?
พื้นฐาน
- ทำความเข้าใจฟังก์ชันการจัดการอาเรย์ส่วนใหญ่
- ความแตกต่างระหว่างฟังก์ชันการประมวลผลสตริงและฟังก์ชัน mb_ series
- & ราคา รวมกับการวิเคราะห์กรณี
- ความแตกต่างระหว่าง == และ ===
- ความแตกต่างระหว่าง isset และว่างเปล่า
- เข้าใจฟังก์ชั่นเวทย์มนตร์ทั้งหมด
- ความแตกต่างระหว่าง static, $this และ self
- ความแตกต่างระหว่างความเป็นส่วนตัว การป้องกัน สาธารณะ และขั้นสุดท้าย
- อุ๊ย กำลังคิดอยู่
- สถานการณ์การใช้งานตามลำดับของคลาสนามธรรมและอินเทอร์เฟซ
- ลักษณะคืออะไร?
- ความแตกต่างระหว่าง echo, print และ print_r (แยกแยะความแตกต่างระหว่างนิพจน์และคำสั่ง)
- ความแตกต่างระหว่าง __construct และ __destruct
- ฟังก์ชันคงที่ (แยกความแตกต่างระหว่างคลาสและฟังก์ชัน) แบบแมนนวล, SOF
- ฟังก์ชัน __toString()
- ความแตกต่างระหว่างเครื่องหมายคำพูดเดี่ยว
'
และเครื่องหมายคำพูดคู่ "
- รหัสสถานะ HTTP ทั่วไป หมายความว่าอย่างไร
- 301 หมายถึงอะไร 404?
บทขั้นสูง
- โหลดอัตโนมัติ หลักการแต่งเพลง PSR-4 หลักการ
- การแชร์เซสชั่น เวลาเอาชีวิตรอด
- การจัดการข้อยกเว้น
- วิธีวนซ้ำวัตถุ foreach
- วิธีการอาร์เรย์วัตถุการดำเนินการ
$obj[key];
- วิธีการทำงานของวัตถุ
$obj(123);
- Yield คืออะไร เรามาพูดถึงสถานการณ์การใช้ Yield กันดีกว่า
- PSR, PSR-1, 2, 4, 7 คืออะไร
- วิธีรับ IP ไคลเอนต์และที่อยู่ IP ของเซิร์ฟเวอร์
- ไอพีไคลเอ็นต์
- ไอพีเซิร์ฟเวอร์
- ทำความเข้าใจแนวคิดของการส่ง IP จริงผ่านพร็อกซีอย่างโปร่งใส
- วิธีเปิดใช้งานพร้อมท์ข้อยกเว้น PHP
- php.ini เปิด
display_errors
และตั้งค่าระดับ error_reporting
- ที่รันไทม์ ให้ใช้
ini_set(k, v);
เพื่อตั้งค่าแบบไดนามิก
- วิธีคืนการเปลี่ยนเส้นทาง 301
- [คำเตือน] โปรดระวังว่าสคริปต์จะทำงานต่อไปหลังจากตั้งค่า 301 อย่าคิดว่าสิ่งต่อไปนี้จะไม่ทำงาน ใช้
die
หรือ exit
หากจำเป็น
- วิธีรับเส้นทางการติดตั้งส่วนขยาย
-
phpinfo();
extension_dir
การค้นหาหน้า_dir - บรรทัดคำสั่ง
php -i |grep extension_dir
- รันไทม์
echo ini_get('extension_dir');
- หลักการเปรียบเทียบสตริงและตัวเลข ให้ความสนใจกับระบบฐานแปดที่ขึ้นต้นด้วย 0 และระบบเลขฐานสิบหกที่ขึ้นต้นด้วย 0x
- ขนาดการเปรียบเทียบสตริง จากซ้าย (บิตสูง) ไปขวา เปรียบเทียบอักขระต่ออักขระ ASCII
- ส่วนหัว BOM คืออะไร และจะลบออกได้อย่างไร
-
0xEF
, 0xBB
, 0xBF
- ตรวจจับลบ
- MVC คืออะไร
- หลักการดำเนินการฉีดพึ่งพา
- วิธีดำเนินการคำสั่งแบบอะซิงโครนัส
- เอ็นจิ้นเทมเพลตคืออะไร แก้ปัญหาอะไรได้บ้าง และหลักการใช้งาน (Smarty, Twig, Blade)
- วิธีการดำเนินการลูกโซ่
$obj->w()->m()->d();
- การใช้เครื่องมือดีบักประสิทธิภาพ Xhprof และ Xdebug
- อะไรคือความแตกต่างระหว่างอาร์เรย์ดัชนี
[1, 2]
และอาร์เรย์ที่เชื่อมโยง ['k1'=>1, 'k2'=>2]
- วิธีใช้แคชและสถานการณ์
ฝึกฝน
- เมื่อกำหนดอาร์เรย์สองมิติ ให้เรียงลำดับตามฟิลด์ที่กำหนด
- วิธีระบุประเภทไฟล์ที่อัปโหลด เช่น อนุญาตให้อัปโหลดเฉพาะ JPG เท่านั้น
- แลกเปลี่ยนค่าของตัวแปรสองตัวโดยไม่ใช้ตัวแปรชั่วคราว
$a=1; $b=2;
=> $a=2; $b=1;
- มีอักขระที่อ่านไม่ออกใน strtoupper เมื่อแปลงภาษาจีน คุณจะแก้ไขได้อย่างไร
php echo strtoupper('ab你好c');
- ความแตกต่างระหว่าง Websocket, Long-Polling, เหตุการณ์ที่เซิร์ฟเวอร์ส่ง (SSE)
- ข้อผิดพลาด "ส่วนหัวที่ส่งแล้ว" หมายความว่าอย่างไร และจะหลีกเลี่ยงได้อย่างไร
อัลกอริทึม
- การเรียงลำดับด่วน (เขียนด้วยลายมือ)
- การเรียงลำดับแบบบับเบิ้ล (เขียนด้วยลายมือ)
- การค้นหาแบบไบนารี (ความเข้าใจ)
- ค้นหาอัลกอริทึม KMP (เข้าใจ)
- ค้นหาความลึกและความกว้างก่อน (เข้าใจ)
- อัลกอริทึมการกำจัดแคช LRU (เข้าใจว่า Memcached ใช้อัลกอริทึมนี้)
โครงสร้างข้อมูล (ความเข้าใจ)
- ลักษณะของฮีปและสแต็ก
- คิว
- ตารางแฮช
- รายการที่เชื่อมโยง
การเปรียบเทียบ
- ความแตกต่างระหว่างคุกกี้และเซสชัน
- ความแตกต่างระหว่าง
GET
และ POST
- ความแตกต่างระหว่าง
include
และ require
- ความแตกต่างระหว่าง
include_once
และ require_once
- ความแตกต่างระหว่าง Memcached และ Redis
- เอ็นจิ้นการจัดเก็บข้อมูล MySQL และความแตกต่าง (คุณจะถามเกี่ยวกับความแตกต่างระหว่าง MyISAM และ Innodb แน่นอน)
- ความแตกต่างระหว่าง HTTP และ HTTPS
- ความแตกต่างระหว่าง Apache และ Nginx
- ความแตกต่างระหว่าง Defin() และ Const
- อะไรคือความแตกต่างระหว่างคุณลักษณะและอินเทอร์เฟซ และคุณลักษณะที่เป็นปัญหาที่แก้ไขได้คืออะไร
- ความแตกต่างระหว่าง Git และ SVN
ฐานข้อมูล
- MySQL
- CRUD
- เข้าร่วม, เข้าร่วมทางซ้าย, เข้าร่วมทางขวา, เข้าร่วมภายใน
- ยูเนี่ยน
- GROUP BY + COUNT + WHERE กรณีรวมกัน
- ฟังก์ชัน MySQL ที่ใช้กันทั่วไป เช่น now(), md5(), concat(), uuid() เป็นต้น
-
1:1
, 1:n
, n:n
ใช้ได้กับแต่ละสถานการณ์ - ทำความเข้าใจว่าทริกเกอร์คืออะไรและอธิบายสถานการณ์การใช้งาน
- วิธีการเพิ่มประสิทธิภาพฐานข้อมูล
- ดัชนี ดัชนีร่วม (เงื่อนไขการตี)
- ฐานข้อมูลย่อยและตารางย่อย (
水平分表
และ垂直分表
) - ฉากกั้นห้อง
- สามารถใช้
explain
เพื่อวิเคราะห์ปัญหาด้านประสิทธิภาพของ SQL และเข้าใจความหมายของแต่ละพารามิเตอร์ได้- เน้นทำความเข้าใจ
type
, rows
, key
- Slow Log (ใช้ทำอะไร จำเป็นเมื่อใด)
- MSSQL (เข้าใจ)
- NOSQL
- Redis, Memcached, MongoDB
- การเปรียบเทียบและสถานการณ์ที่เกี่ยวข้อง (การเปรียบเทียบสามารถทำได้จากมิติต่อไปนี้)
- วิริยะ
- รองรับข้อมูลหลายประเภท
- มี CPU มัลติคอร์ให้เลือก
- กลไกการกำจัดหน่วยความจำ
- ClusterCluster
- รองรับ SQL
- การเปรียบเทียบประสิทธิภาพ
- เรื่องการสนับสนุน
- สถานการณ์การใช้งาน
- คุณเคยใช้อะไรในการแก้ปัญหาอะไรมาก่อน และทำไมคุณถึงเลือกมัน
เซิร์ฟเวอร์
- ดูข้อมูล เช่น CPU, หน่วยความจำ, เวลา, เวอร์ชันของระบบ ฯลฯ
- find, grep เพื่อค้นหาไฟล์
- awk ประมวลผลข้อความ
- ดูไดเร็กทอรีที่มีคำสั่งอยู่
- คุณเคยรวบรวม PHP ด้วยตัวเองหรือไม่? วิธีเปิดใช้งานฟังก์ชัน Readline
- วิธีตรวจสอบการใช้งานหน่วยความจำและ CPU ของกระบวนการ PHP
- วิธีเพิ่มส่วนขยายให้กับ PHP
- แก้ไขตำแหน่งที่เก็บข้อมูลเซสชัน PHP และแก้ไขพารามิเตอร์การกำหนดค่า INI
- โหลดบาลานซ์ประเภทใดบ้าง เลือกประเภทที่คุณคุ้นเคยและอธิบายหลักการของมัน
- MS การจำลองแบบฐานข้อมูล master-slave ซิงโครไนซ์อย่างไร ดันหรือดึง? มันจะไม่ซิงค์กันเหรอ? จะทำอย่างไร
- วิธีการตรวจสอบความพร้อมใช้งานของข้อมูล แม้ว่าจะถูกลบไปแล้ว ก็สามารถกู้คืนกลับคืนสู่ระดับนาทีได้ คุณจะทำอย่างไร.
- มีการเชื่อมต่อฐานข้อมูลมากเกินไป เกินค่าสูงสุด วิธีปรับสถาปัตยกรรมให้เหมาะสม จะสามารถประมวลผลได้อย่างสะดวกได้อย่างไร?
- บทที่ 502 อะไรคือเหตุผลที่เป็นไปได้? วิธีแก้ปัญหา 504?
สถาปัตยกรรม
- การดำเนินงานและการบำรุงรักษาบางส่วน (ความเข้าใจ):
- โหลดบาลานซ์ (Nginx, HAProxy, DNS)
- การจำลองแบบ Master-Slave (MySQL, Redis)
- ความซ้ำซ้อนของข้อมูลและการสำรองข้อมูล (หลักการที่เพิ่มขึ้นของ MySQL และแบบเต็ม)
- การติดตามและตรวจสอบ (สองมิติของการอยู่รอดและความพร้อมในการให้บริการ)
- MySQL, Redis, Memcached Proxy, วัตถุประสงค์และหลักการของคลัสเตอร์
- การแบ่งส่วน
- คลัสเตอร์ความพร้อมใช้งานสูง
- การโจมตี
- การคอมไพล์ซอร์สโค้ด การปรับแต่งหน่วยความจำ
- แคช
- เมื่อใดก็ตามที่คุณพบสถานการณ์ที่จำเป็นต้องใช้แคชในที่ทำงาน ให้อธิบายเหตุผลสั้นๆ ว่าเพราะเหตุใด
- โซลูชั่นการค้นหา
- การปรับแต่งประสิทธิภาพ
- โซลูชั่นการติดตามผลในมิติต่างๆ
- โซลูชันการประมวลผลแบบรวมศูนย์การรวบรวมบันทึก
- ความเป็นสากล
- การออกแบบฐานข้อมูล
- สารละลายแบบคงที่
- วาดไดอะแกรมสถาปัตยกรรมแอปพลิเคชัน PHP ทั่วไป
กรอบ
- ThinkPHP (TP), CodeIgniter (CI), Zend (ซีรี่ส์ที่ไม่ใช่ OOP)
- Yaf, Phalcon (ส่วนขยาย C)
- Yii, Laravel, Symfony (ซีรี่ส์ OOP ล้วนๆ)
- Swoole, Workerman (เฟรมเวิร์กการเขียนโปรแกรมเครือข่าย)
- กรอบการเปรียบเทียบจะแยกแยะจุดทิศทางหลายจุด
- OOP บริสุทธิ์หรือไม่?
- วิธีการโหลดไลบรารี่ของคลาส (เขียนการโหลดอัตโนมัติของคุณเองเทียบกับมาตรฐานผู้แต่ง)
- ทิศทางการใช้งาน (เฟรมเวิร์กพื้นฐานของ CI, Laravel เป็นเฟรมเวิร์กประสิทธิภาพการพัฒนาที่สูงและมีส่วนประกอบพื้นฐานจำนวนเท่าใด)
- กล่องดำ (เทียบกับระบบขยาย C)
- ความเร็วในการทำงาน (เช่น: Laravel โหลดสิ่งต่าง ๆ มากมาย)
- การใช้หน่วยความจำ
รูปแบบการออกแบบ
- ลายซิงเกิลตัน (เน้น)
- รูปแบบโรงงาน (กุญแจ)
- รูปแบบผู้สังเกตการณ์ (เน้น)
- การฉีดพึ่งพา (เน้น)
- รูปแบบการตกแต่ง
- โหมดพร็อกซี
- โหมดผสมผสาน
ความปลอดภัย
- การฉีด SQL
- XSS และ CSRF
- การกรองอินพุต
- ความปลอดภัยของคุกกี้
- ปิดการใช้งานฟังก์ชั่น
mysql_
- เมื่อจัดเก็บรหัสผ่านผู้ใช้ในฐานข้อมูลต้องทำอย่างไรเพื่อความปลอดภัย?
- รหัสยืนยันปัญหาเซสชัน
- Secure Session ID (ดังนั้นแม้หลังจากการสกัดกั้นแล้ว ก็ไม่สามารถจำลองและใช้งานได้)
- การรักษาความปลอดภัยการอนุญาตไดเรกทอรี
- ประกอบด้วยไฟล์ในเครื่องและระยะไกล
- การอัพโหลดไฟล์สคริปต์ PHP
- ฟังก์ชั่น
eval
รันสคริปต์ -
disable_functions
ปิดฟังก์ชันที่มีความเสี่ยงสูง - ผู้ใช้และกลุ่มอิสระของ FPM ให้สิทธิ์เฉพาะแก่แต่ละไดเร็กทอรี
- เข้าใจความแตกต่างระหว่าง Hash และ Encrypt
ระดับสูง
- การใช้งานพื้นฐานของอาร์เรย์ PHP (HashTable + รายการที่เชื่อมโยง)
- คัดลอกหลักการเขียนเมื่อถึง GC
- แบบจำลองกระบวนการ PHP วิธีการสื่อสารด้วยกระบวนการ ความแตกต่างของเธรดกระบวนการ
- หลักการสำคัญของผลผลิตคืออะไร?
- PDO เตรียมหลักการ
- ความแตกต่างระหว่าง PHP 7 และ PHP 5 คืออะไร
- สถานการณ์สมมติที่บังคับใช้และวิธีการนำโครูทีนไปใช้
ส่วนหน้า
- รับโหนดและคุณลักษณะ DOM โดยกำเนิด
- รุ่นกล่อง
- ไฟล์ CSS, แท็กสไตล์, ลำดับความสำคัญของแอตทริบิวต์สไตล์อินไลน์
- ลำดับการทำงาน HTML และ JS (หน้า JS จากบนลงล่าง)
- การดำเนินการอาร์เรย์ JS
- ประเภทการตัดสิน
- ขอบเขตนี้
- .map() และการวิเคราะห์สถานการณ์การใช้งานเฉพาะนี้
- การอ่านและการเขียนคุกกี้
- การดำเนินงาน JQuery
- คำขอ Ajax (ความแตกต่างระหว่างซิงโครนัสและอะซิงโครนัส) ตัวเลขสุ่มห้ามไม่ให้มีการแคช
- Bootstrap มีประโยชน์อย่างไร?
- คำขอข้ามโดเมน N โซลูชัน
- เทคโนโลยีใหม่ (เข้าใจ)
- อีเอส6
- แบบโมดูลาร์
- หีบห่อ
- สร้างเครื่องมือ
- vue, ตอบสนอง, webpack,
- ส่วนหน้าmvc
- การเพิ่มประสิทธิภาพ
- เบราว์เซอร์จำกัดจำนวนพร้อมกันสำหรับชื่อโดเมนเดียว
- แคชทรัพยากรแบบคงที่ 304 (หลักการ If-Modified-Since และ Etag)
- รวมไอคอนขนาดเล็กหลายไอคอนเข้าด้วยกันและใช้เทคโนโลยีการกำหนดตำแหน่งเพื่อลดคำขอ
- ทรัพยากรแบบคงที่จะรวมกันเป็นคำขอเดียวและถูกบีบอัด
- ซีดีเอ็น
- ทรัพยากรคงที่ทำให้เทคโนโลยีการโหลดล่าช้าและเทคโนโลยีการโหลดล่วงหน้า
- ให้มีชีวิตอยู่
- การเพิ่มประสิทธิภาพ CSS ที่ส่วนหัวและ JS ที่ส่วนท้าย (หลักการ)
เครือข่าย
- ที่อยู่ IP ไปยัง INT
- 192.168.0.1/16 หมายถึงอะไร
- หน้าที่หลักของ DNS คืออะไร?
- ความแตกต่างระหว่าง IPv4 และ v6
การเขียนโปรแกรมเครือข่าย
- กระบวนการจับมือสามทาง TCP
- ความแตกต่างระหว่าง TCP และ UDP สถานการณ์ที่เกี่ยวข้องตามลำดับ
- มีวิธีใดที่จะรับประกันความพร้อมใช้งานสูงของ UDP (เข้าใจ)
- วิธีแก้ปัญหาแพ็คเก็ตเหนียว TCP?
- เหตุใดจึงต้องมีการเต้นของหัวใจ?
- การเชื่อมต่อที่ยาวนานคืออะไร?
- HTTPS ปลอดภัยอย่างไร?
- ความแตกต่างระหว่างสตรีมและดาตาแกรม
- มีหลายวิธีในการสื่อสารระหว่างกระบวนการ วิธีไหนเร็วที่สุด?
- จะเกิดอะไรขึ้น
fork()
?
บท API
- RESTful คืออะไร
- วิธีทำให้คำขอ
DELETE
เข้ากันได้กับเบราว์เซอร์ที่ไม่รองรับคำขอ DELETE
- หน้าที่หลักของ
APP_ID
APP_SECRET
ของ API ทั่วไปคืออะไร อธิบายกระบวนการ - จะมั่นใจได้อย่างไรว่าข้อมูลในคำขอ API จะไม่ถูกแก้ไข?
- ความแตกต่างระหว่าง JSON และ JSONP
- ความแตกต่างระหว่างการเข้ารหัสข้อมูลและการตรวจสอบลายเซ็น
- อาร์เอสเอคืออะไร
- วิธีจัดการกับความเข้ากันได้ของเวอร์ชัน API
- การจำกัดกระแส (ถังไม้ ถังโทเค็น)
- OAuth 2 ใช้ในสถานการณ์ใดบ้างเป็นหลัก
- เจดับบลิว
- อะไรคือความแตกต่างระหว่าง
json_encode(['key'=>123]);
และ return json_encode([]);
ใน PHP จะเกิดปัญหาอะไรขึ้น? วิธีแก้ปัญหา
คะแนนโบนัส
- ทำความเข้าใจคุณลักษณะภาษาทั่วไปและการนำไปใช้กับสถานการณ์ต่างๆ
- PHP VS Golang
- PHP เทียบกับ Python
- PHP กับ Java
- เรียนรู้เกี่ยวกับการพัฒนาส่วนขยาย PHP
- มีความเชี่ยวชาญใน C
คำแถลง
ข้อมูลนี้ไม่ได้กำหนดเป้าหมายไปที่บริษัทใด ๆ และเราจะไม่รับผิดชอบต่อผลกระทบของข้อมูลนี้ที่มีต่อคุณ
ขอให้โชคดี
ข้อมูลอ้างอิงที่เกี่ยวข้อง
https://blog.csdn.net/l269798518/article/details/82428601