Artikel ini meringkaskan 40 soalan dan jawapan temu duga PHP untuk anda. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.
Apakah itu berorientasikan objek? Apakah ciri-ciri utama?
Berorientasikan objek ialah kaedah reka bentuk untuk atur cara, yang membantu meningkatkan kebolehgunaan semula atur cara dan menjadikan struktur atur cara lebih jelas. Ciri-ciri utama: enkapsulasi, pewarisan, polimorfisme.
2. Apakah perbezaan antara SESI dan COOKIE? Sila jelaskan sebab dan fungsi daripada protokol? protokol tidak dapat membezakan sama ada pengguna datang dari tapak web yang sama Pengguna yang sama meminta halaman yang berbeza tidak boleh dianggap sebagai pengguna yang sama. B. SESI disimpan di bahagian pelayan, dan COOKIE disimpan di bahagian pelanggan. Sesi agak selamat. Kuki boleh diubah suai dengan cara tertentu dan tidak selamat. Sesi bergantung pada kuki untuk penghantaran.
Selepas melumpuhkan kuki, sesi tidak boleh digunakan seperti biasa. Kelemahan Sesi: Ia disimpan pada bahagian pelayan, dan setiap bacaan dibaca daripada pelayan, yang menggunakan sumber pada pelayan. Sesi disimpan dalam fail atau pangkalan data pada bahagian pelayan Ia disimpan dalam fail secara lalai Laluan fail ditentukan oleh session.save_path dalam fail konfigurasi PHP. Fail sesi adalah awam.
3. Apakah maksud 302, 403 dan 500 kod dalam status HTTP?
Satu, dua, tiga, empat dan lima prinsip: (iaitu satu: siri mesej; dua: siri kejayaan; tiga: siri ubah hala; empat: siri ralat permintaan; lima: pelayan- siri ralat sisi )
302: Pemindahan sementara berjaya, kandungan yang diminta telah dialihkan ke lokasi baharu
403: Dilarang akses
500: Ralat dalaman pelayan
401: Mewakili akses tanpa kebenaran.
Int Integer char Aksara panjang tetap Varchar Aksara panjang boleh ubah Datetime Datetime type Teks Perbezaan antara jenis teks Varchar dan char char ialah jenis aksara panjang tetap akan menduduki selagi ruang. Varchar ialah jenis aksara panjang boleh ubah Ia mengambil ruang sebanyak kandungannya, yang boleh menjimatkan ruang dengan berkesan. Oleh kerana jenis varchar adalah berubah-ubah, pelayan perlu melakukan operasi tambahan apabila panjang data berubah, jadi kecekapan adalah lebih rendah daripada jenis char.
5. Apakah perbezaan asas antara MyISAM dan InnoDB? Bagaimanakah struktur indeks dilaksanakan?
A. Jenis MyISAM tidak menyokong transaksi, kunci meja, dan terdedah kepada pemecahan Ia perlu dioptimumkan dengan kerap dan mempunyai kelajuan membaca dan menulis yang pantas dengan pertanyaan yang kerap; B Jenis InnoDB menyokong urus niaga, kunci baris, dan mempunyai keupayaan pemulihan ranap dan tulis adalah lebih perlahan daripada MyISAM . Ia mengambil banyak ruang dan tidak menyokong indeks teks penuh.
Cipta indeks: nama jadual amaran tambah nama indeks (`nama medan`)
6 Perbezaan antara isset() dan kosong()
sset menentukan sama ada pembolehubah wujud boleh dihantar masuk. Jika salah satu pembolehubah tidak wujud, ia akan mengembalikan kosong menentukan sama ada pembolehubah itu kosong dan palsu. Jika ia kosong, ia akan kembali benar. https://jq.qq.com/?_wv=1027&k=55dPDrC
7 Sila terangkan perbezaan antara lulus mengikut nilai dan lulus melalui rujukan dalam PHP . Bila hendak lulus dengan nilai dan bila hendak lulus dengan rujukan?
Nilai lulus: sebarang perubahan pada nilai dalam skop fungsi diabaikan di luar fungsi
Dengan rujukan Lulus: Sebarang perubahan pada nilai dalam skop fungsi juga akan mencerminkan pengubahsuaian ini di luar fungsi
Kelebihan dan Kelemahan: Apabila melalui nilai, PHP mesti menyalin nilai. Terutama untuk rentetan dan objek yang besar, ini boleh menjadi operasi yang mahal. Melewati rujukan tidak memerlukan penyalinan nilai, yang bagus untuk meningkatkan prestasi.
8. Apakah fungsi error_reporting dalam PHP?
Tetapkan tahap ralat PHP dan kembalikan tahap semasa.
9. Beritahu saya tentang pemahaman anda tentang teknologi caching?
Teknologi caching ialah untuk cache kandungan dinamik ke dalam fail dan mengakses halaman dinamik dalam tempoh masa tertentu untuk memanggil terus fail cache tanpa perlu melawat semula pangkalan data.
10. Struktur tiga lapisan MVC sering digunakan dalam pengaturcaraan pada masa kini.
Tiga lapisan MVC merujuk kepada: model perniagaan, paparan dan pengawal masing-masing Lapisan pengawal memanggil model untuk memproses data, dan kemudian memetakan data ke lapisan paparan paparan. Kelebihannya ialah: ① Ia boleh Mencapai kebolehgunaan semula kod dan mengelakkan redundansi kod; kelebihan AJAX ?
ajax ialah teknologi penghantaran tak segerak yang boleh dilaksanakan melalui javascript atau rangka kerja JQuery untuk mencapai penyegaran separa, yang mengurangkan tekanan pada pelayan dan meningkatkan pengalaman pengguna.
12. Dalam pembangunan program, bagaimana untuk meningkatkan kecekapan operasi program?
A. Optimumkan pernyataan SQL, cuba jangan gunakan pilihan * dalam pernyataan pertanyaan, gunakan medan mana untuk menyemak medan yang kurang menggunakan subkueri dan boleh digantikan dengan sambungan jadual; pertanyaan;
B. Cipta indeks dalam jadual data;
13. Untuk tapak web yang mempunyai trafik yang besar, apakah kaedah yang anda gunakan untuk menyelesaikan masalah trafik?A kadar pukulan cache
B. Gunakan pengimbangan beban
C Gunakan cdn untuk menyimpan dan mempercepatkan fail statik
D Idea untuk mengurangkan penggunaan pangkalan data
E . Periksa di mana kesesakan statistik adalah
F proksi terbalik
14 Apakah perbezaan antara memasukkan dan memerlukan penyata? fail, apakah pernyataan yang boleh digunakan untuk menggantikannya? amaran, Keperluan menjana gangguan ralat secara langsung require dimuatkan sebelum dijalankan
include dimuatkan semasa runtime
gema: struktur pernyataan;
print: ialah fungsi dengan nilai pulanganprint_r: boleh mencetak tatasusunan, objek
var_dump : boleh mencetak tatasusunan Objek dengan jenis data19. Tulis ciri-ciri templat pintar
Kelajuan dan penyusunan pantas jenis , teknologi caching, mekanisme pemalam, logik prestasi yang berkuasa
20 Cara melaksanakan lompat halaman dalam PHPKaedah 2: Gunakan meta
22. Jika input kandungan oleh pengguna perlu output sebagaimana adanya, fungsi manakah yang harus digunakan untuk memproses data sebelum memasukkannya ke dalam pangkalan data? htmlspecialchars atau htmlentities
23. Apakah serangan CSRF? Serangan XSS? Bagaimana untuk mencegahnya? CSRF, pemalsuan permintaan merentas tapak, penyerang berpura-pura menjadi pengguna dan menghantar permintaan untuk mencuri maklumat atau merosakkan sistem.
Huraikan prinsip asas: pengguna melawat tapak web A untuk log masuk dan menjana kuki, dan kemudian melawat tapak web B. Jika tapak web A mempunyai kelemahan CSRF, tapak web B akan membuat permintaan ke tapak web A (ini adalah bersamaan dengan lawatan pengguna). Tapak web A akan menganggap permintaan itu daripada pengguna, jadi tapak web B berjaya menyamarkan identiti anda, jadi ia dipanggil serangan skrip rentas tapak.
header("Location:网址");//直接跳转 header("refresh:3;url=http://www.jsdaima.com");//三秒后跳转
echo"";
B Tambahkan pengesahan token pada permintaan POST, jana kod rawak dan simpannya sesi, bawa kod rawak ini ke borang, dan apabila menyerahkan, pelayan akan mengesahkan sama ada kod rawak adalah sama. XSS, serangan skrip merentas tapak. Pencegahan: Jangan percaya sebarang input, tapis input.
iconv('GB2312','UTF-8','js代码(http://www.jsdaima.com)是IT资源下载与IT技能学习平台。');
24 Keselamatan adalah penting untuk sesuatu program. Sila beritahu saya apakah mekanisme keselamatan yang perlu diberi perhatian semasa pembangunan.
A. Cegah penyerahan jauh; B. Cegah suntikan SQL dan penapis kod khas;
25 Adakah anda faham format data json?
JSON (Notasi objek javascript) ialah format pertukaran data yang ringan Format data json ditetapkan dan boleh digunakan untuk pemindahan data dalam berbilang bahasa.
26. Apakah itu transaksi? dan ciri-cirinya?
Jawapan: Transaksi: Ia adalah satu siri operasi pangkalan data dan unit logik asas aplikasi pangkalan data.
Ciri-ciri urus niaga:
Atomicity: iaitu, tidak boleh dibahagikan sama ada semua urus niaga dilaksanakan atau tiada satu pun dilaksanakan.
B. Ketekalan atau kebolehtalian. Pelaksanaan transaksi menukar pangkalan data daripada satu keadaan betul kepada keadaan betul yang lain
C. Pengasingan. Sebelum transaksi dilakukan dengan betul, sebarang perubahan pada data oleh transaksi tidak dibenarkan diberikan kepada mana-mana transaksi lain,
D. Ketahanan. Selepas transaksi diserahkan dengan betul, keputusannya akan disimpan secara kekal dalam pangkalan data Walaupun terdapat kegagalan lain selepas transaksi diserahkan, hasil pemprosesan transaksi akan disimpan.
Atau fahami dengan cara ini:
Transaksi ialah sekumpulan pernyataan SQL yang diikat bersama sebagai unit kerja logik Jika mana-mana operasi pernyataan gagal, keseluruhan operasi akan gagal, dan operasi seterusnya akan Kembali ke keadaan sebelum operasi, atau terdapat nod padanya. Untuk memastikan sesuatu sama ada dilaksanakan atau tidak dilaksanakan, transaksi boleh digunakan. Untuk pernyataan berkumpulan untuk dianggap sebagai transaksi, ia perlu lulus ujian ACID, iaitu atomicity, konsistensi, pengasingan dan ketahanan.
27. Apakah kunci?
Jawapan: Pangkalan data ialah sumber kongsi yang digunakan oleh berbilang pengguna. Apabila berbilang pengguna mengakses data secara serentak, berbilang transaksi secara serentak mengakses data yang sama dalam pangkalan data. Jika operasi serentak tidak dikawal, data yang salah boleh dibaca dan disimpan, memusnahkan konsistensi pangkalan data.
Penguncian ialah teknologi yang sangat penting untuk mencapai kawalan konkurensi pangkalan data. Sebelum transaksi beroperasi pada objek data, ia terlebih dahulu menghantar permintaan kepada sistem untuk menguncinya. Selepas mengunci, transaksi mempunyai kawalan tertentu ke atas objek data Sebelum transaksi melepaskan kunci, transaksi lain tidak boleh mengemas kini objek data.
Jenis kunci asas: kunci termasuk kunci peringkat baris dan kunci peringkat meja
28. Apakah peranan indeks? Dan apakah kelebihan dan kekurangannya?
Jawapan: Indeks ialah jadual pertanyaan khas yang boleh digunakan oleh enjin carian pangkalan data untuk mempercepatkan pengambilan data. Ia sangat serupa dengan jadual kandungan buku dalam kehidupan sebenar Anda boleh mencari data yang anda inginkan tanpa menanyakan keseluruhan buku. Indeks boleh menjadi unik, dan mencipta indeks membolehkan anda menentukan satu lajur atau berbilang lajur. Kelemahannya ialah ia melambatkan kemasukan data dan meningkatkan saiz pangkalan data.
29. Bagaimana untuk memahami tiga paradigma dengan cara yang popular?
Bentuk normal pertama: 1NF ialah kekangan atom pada atribut, yang memerlukan atribut menjadi atom dan tidak boleh diuraikan
Bentuk normal kedua: 2NF ialah kekangan unik pada rekod , memerlukan rekod mempunyai pengecam unik, iaitu, keunikan entiti
Bentuk normal ketiga: 3NF ialah kekangan pada lebihan medan, iaitu, mana-mana medan tidak boleh diterbitkan daripada medan lain dan ia memerlukan medan tidak berlebihan .
30 Apakah perbezaan antara kunci utama, kunci asing dan indeks?
Definisi:
Kunci utama--mengenal pasti rekod secara unik, tidak boleh diduplikasi dan tidak dibenarkan kosong
Kunci asing--kunci asing jadual adalah ke jadual lain Kunci utama, kunci asing boleh mempunyai pendua, boleh menjadi nilai kosong
Indeks - medan ini tidak mempunyai nilai pendua, tetapi boleh mempunyai nilai nol
Fungsi:
Kunci utama - digunakan untuk memastikan integriti data Harta
Kunci asing - digunakan untuk mewujudkan sambungan dengan jadual lain
Indeks - untuk meningkatkan kelajuan pengisihan pertanyaan
:
Kunci utama - hanya boleh ada satu kunci utama
Kekunci asing - jadual boleh mempunyai berbilang kunci asing
Indeks - jadual boleh mempunyai berbilang indeks unik
31. Penerangan ringkas pengubahsuaian peribadi, dilindungi dan awam hak akses.
peribadi: ahli persendirian, yang hanya boleh diakses di dalam kelas.
dilindungi: ahli yang dilindungi, boleh diakses dalam kelas dan kelas yang diwarisi.
awam: Ahli awam, awam sepenuhnya, tiada sekatan akses.
32. Apakah perbezaan antara timbunan dan timbunan?
A. Timbunan ialah ruang memori yang diperuntukkan secara dinamik semasa menjalankan program Anda boleh menentukan saiz memori timbunan yang akan diperuntukkan mengikut keadaan berjalan program.
B. Tindanan ialah ruang memori yang diperuntukkan semasa penyusunan Ia adalah ruang memori yang diperuntukkan, jadi saiz tindanan mesti ditakrifkan dengan jelas dalam kod anda.
33 Apakah kaedah sihir yang biasa digunakan? Contoh
Jawapan: PHP menetapkan bahawa kaedah bermula dengan dua garis bawah (__) dikhaskan sebagai kaedah ajaib, jadi adalah disyorkan bahawa nama fungsi anda tidak harus bermula dengan __, melainkan ia adalah untuk redundansi. Mengandungi kaedah sihir yang sedia ada.
__construct() 实例化类时自动调用。
__destruct() 类对象使用结束时自动调用。
__set() 在给未定义的属性赋值的时候调用。
__get() 调用未定义的属性时候调用。
__isset() 使用isset()或empty()函数时候会调用。
__unset() 使用unset()时候会调用。
__sleep() 使用serialize序列化时候调用。
__wakeup() 使用unserialize反序列化的时候调用。
__call() 调用一个不存在的方法的时候调用。
__callStatic()调用一个不存在的静态方法是调用。
__toString() 把对象转换成字符串的时候会调用。比如 echo。
__invoke() 当尝试把对象当方法调用时调用。
__set_state() 当使用var_export()函数时候调用。接受一个数组参数。
__clone() 当使用clone复制一个对象时候调用。
34、$this和self、parent这三个关键词分别代表什么?在哪些场合下使用?
$this 当前对象
self 当前类
parent 当前类的父类
$this在当前类中使用,使用->调用属性和方法
self也在当前类中使用,不过需要使用::调用
parent在类中使用
35、作用域操作符::如何使用?都在哪些场合下使用?
调用类常量
调用静态方法
36、__autoload()方法的工作原理是什么?
答:使用这个魔术函数的基本条件是类文件的文件名要和类的名字保持一致。
当程序执行到实例化某个类的时候,如果在实例化前没有引入这个类文件,那么就自动执行__autoload()函数。
这个函数会根据实例化的类的名称来查找这个类文件的路径,当判断这个类文件路径下确实存在这个类文件后
就执行include或者require来载入该类,然后程序继续执行,如果这个路径下不存在该文件时就提示错误。
使用自动载入的魔术函数可以不必要写很多个include或者require函数。
37、简述高并发网站解决方案。
A、前端优化(CND加速、建立独立图片服务器)
B、服务端优化(页面静态化、并发处理[异步|多线程]、队列处理)
C、数据库优化(数据库缓存[Memcachaed|Redis]、读写分离、分库分表、分区)
D、Web服务器优化(负载均衡、反向代理)
38、PHP遍历文件夹下所有文件
<?php function read_all($dir){ if(!is_dir($dir)) return false; $handle = opendir($dir); if($handle){ while(($fl = readdir($handle)) !== false){ $temp = $dir.$fl; //$fl !='.' && $fl != '..' 排除当前目录及父级目录 if(is_dir($temp) && $fl!='.' && $fl != '..'){ echo '目录:'.$temp.'<br>'; read_all($temp); }else{ if($fl !='.' && $fl != '..'){ echo '文件:'.$temp.'<br>'; } } } } } read_all("./dir/"); ?>
39、在命令行中运行php程序
php indx.php
A、从命令行运行php非常简单。但有些注意事项需要各位了解下,诸如$_SESSION之类的服务器变量是无法在命令行中使用的,其他代码的运行则和web服务器中完全一样;
B、在命令行中执行php文件的好处之一就是可以通过脚本实现一些计划任务(crontab)的执行,而无须通过web服务器。
延伸1:
php -v 显示当前PHP版本
php -m 显示当前php加载的有效模块
php -i 输出无html格式的phpinfo
php --rf function
延伸2:向php脚本传递参数:
提示:命令行下执行php,是不走Apache/Nginx等这类东西的,没有什么http协议,所以get,post传参数根本不起作用,并且还会报错。有些时候需要在shell命令下把PHP当作脚本执行,比如定时任务。这就涉及到在shell命令下如何给php传参的问题,通常有三种方式传参。
A、使用$argv or $argc参数接收
echo "接收到{$argc}个参数"; print_r($argv);
B、使用getopt函数
$param_arr = getopt('a:b:'); print_r($param_arr);
C、提示用户输入
fwrite(STDOUT,'Please enter your name:'); echo 'Your name is:'.fgets(STDIN);
40、你用什么方法检查PHP脚本的执行效率(通常是脚本执行时间)和数据库SQL的效率(通常是数据库Query时间),并定位和分析脚本执行和数据库查询的瓶颈所在?
A、PHP脚本的执行效率
a、代码脚本里计时;
b、xdebug统计函数执行次数和具体时间进行分析,最好使用工具winCacheGrind分析;
c、在线系统用strace跟踪相关进程的具体系统调用。
B、数据库SQL的效率
a、sql的explain(mysql),启用slow query log记录慢查询;
b、通常还要看数据库设计是否合理,需求是否合理等。
41、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题。
A. Sahkan sama ada pelayan boleh menyokong trafik semasa; Kawal muat turun fail , terutamanya fail besar; E. Gunakan hos yang berbeza untuk memuat (load balancing);
42 Pangkalan data MySQL digunakan sebagai storan sistem penerbitan Kenaikan lebih daripada 50,000 item setiap hari dijangka bertahan selama tiga tahun.
A. Struktur pangkalan data yang direka dengan baik, membenarkan lebihan data separa, dan cuba mengelakkan pertanyaan gabungan untuk meningkatkan kecekapan B. Pilih jenis data medan jadual dan enjin storan , Tambah indeks dengan sewajarnya; Tambah mekanisme caching, seperti memcached , redis, dsb. F. Hasilkan halaman statik untuk halaman yang tidak kerap berubah G. Tulis SQL yang cekap; Contohnya, SELECT * FROM TABEL ditukar kepada SELECT field_1, field_2, field_3 FROM TABLE.
43 Enjin simpanan Mysql, perbezaan antara myisam dan innodb.
A Jenis MyISAM tidak menyokong pemprosesan lanjutan seperti pemprosesan transaksi, tetapi jenis InnoDB menyokongnya; kelajuan pelaksanaan adalah jenis InnoDB lebih cepat; count(*) daripada jadual, InnoDB perlu mengimbas keseluruhan jadual untuk mengira bilangan baris, tetapi MyISAM hanya membaca bilangan baris yang disimpan
G Operasi LOAD TABLE FROM MASTER tidak berfungsi untuk InnoDB terlebih dahulu, menukar jadual InnoDB kepada jadual MyISAM selepas mengimport data. Walau bagaimanapun, untuk ciri InnoDB tambahan yang digunakan (seperti kunci asing) ) jadual H MyISAM menyokong kunci meja, dan InnoDB menyokong kunci baris.
MyISAM: matang, stabil, mudah diurus, cepat dibaca. Sesetengah fungsi tidak menyokong (urus niaga, dll.), kunci peringkat jadual.InnoDB: menyokong transaksi, kunci asing dan ciri lain serta penguncian baris data. Ia mengambil banyak ruang dan tidak menyokong pengindeksan teks penuh, dsb.
Lain-lain, terutamanya beberapa pendapat peribadi dan metafizik selepas temu duga: 1 Temuduga Masalah, sebenarnya, banyak syarikat kini mengatur temu duga malam dan temu duga hujung minggu. Hanya berkomunikasi dengan mereka terlebih dahulu Jika anda meminta cuti, tidak menjadi masalah untuk menemu duga tiga syarikat dalam satu hari. 2. Pesanan syarikat penghantaran yang disyorkan ialah memanaskan badan dengan satu atau dua syarikat dahulu, kemudian bandingkan syarikat yang anda yakini, kemudian syarikat yang anda minati, dan akhirnya temu duga terpilih . Sebab utama untuk mengatur pesanan ini ialah walaupun anda mungkin sangat mahir dalam perniagaan anda, memasuki keadaan temu duga memerlukan proses Memanaskan badan untuk temu duga, saya ingin menekankan bahawa persediaan untuk temu duga terlebih dahulu, seperti membaca soalan temu bual dan menyemak buku teknikal, sangat diperlukan. Sebab utama untuk memilih syarikat yang boleh dipercayai yang anda sukai lebih awal adalah untuk mendapatkan tawaran, pertama untuk mengesahkan nilai diri anda, dan kedua untuk berasa yakin. 3. Laraskan mentaliti anda Malah, sesetengah tawaran adalah berdasarkan nasib. mendapat tawaran. Pembelajaran yang disyorkan: "Tutorial Video PHP
"
Atas ialah kandungan terperinci [Kompilasi Hematemesis] 40 soalan temu bual PHP dengan jawapan (pengalaman praktikal). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!