Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ringkaskan dan susun 39 soalan temuduga PHP (perkongsian ringkasan)

Ringkaskan dan susun 39 soalan temuduga PHP (perkongsian ringkasan)

WBOY
WBOYke hadapan
2022-03-23 19:27:248693semak imbas

Artikel ini membawakan anda pengetahuan yang berkaitan tentang PHP Ia terutamanya memperkenalkan soalan temuduga PHP dan meringkaskan tiga puluh sembilan soalan biasa soalan temu bual, tetapi semuanya tidak dapat dipisahkan daripada soalan temuduga PHP asas dan biasa saya harap ia akan membantu semua orang.

Ringkaskan dan susun 39 soalan temuduga PHP (perkongsian ringkasan)

Pembelajaran yang disyorkan: "Tutorial PHP"

PHP Soalan temu bual biasa

1 Perincikan proses permintaan HTTP yang lengkap

Inti soalan ini ialah penyelesaian nama domain. dan pelayan (nginx) menghuraikan kedua-dua bahagian ini Pada asasnya, kedua-dua bahagian ini boleh dijelaskan secara terperinci.

Langkah 1. Menghuraikan URL

Pelayar akan menghuraikan data URL semasa untuk menentukan sama ada URL itu adalah pautan yang sah. Jika ia adalah pautan yang sah, teruskan ke langkah seterusnya seperti biasa. Jika ia bukan pautan sah, fungsi carian akan dilaksanakan, seperti Baidu, 360, carian Google, dsb.

Langkah 2, selesaikan nama domain

Pelayan wujud dalam bentuk IP. Nama domain perlu diselesaikan kepada IP. Terdapat tiga langkah kecil untuk menyelesaikan IP:

1). cache komputer Selesaikan nama domain dalam fail HOST

3), selesaikan nama domain melalui pelayan DNS

Langkah 3, dapatkan maklumat

Dalam langkah ini kami dapat maklumat URL, terutamanya maklumat IP dan port.

Langkah 4. Paket dan lakukan jabat tangan tiga hala

Pelayar membungkus maklumat permintaan dan menghantar data ke pelayan melalui jabat tangan tiga hala TCP.

Langkah 5: Pelayan menghuraikan, memproses dan mengembalikan data

Pelayan mendapatkan data yang dihantar melalui pelbagai peringkat dan kaedah, menganalisis dan memproses data, dan akhirnya mengembalikan data jenis MIME respons. Kod status biasa ialah 200 dan kod ralat tidak normal termasuk 404, 500, 501, dsb.

Langkah 6. Penyemak imbas memperoleh, memaparkan dan memaparkan data

Pelayar memperoleh data daripada pelayan Paparkan halaman kepada pengguna dengan memuatkan sumber, memaparkan halaman dan operasi lain.

2. Apakah perbezaan antara SESI dan COOKIE Sila terangkan sebab dan fungsi protokol?

1), protokol tanpa kewarganegaraan, tidak dapat membezakan pengguna Sama ada mereka datang dari laman web yang sama, pengguna yang sama meminta halaman yang berbeza tidak boleh dianggap sebagai pengguna yang sama.

2), SESSION disimpan di bahagian pelayan, dan COOKIE disimpan di bahagian klien. 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?

Prinsip satu, dua, tiga, empat dan lima: 1. Mesej siri 2, kejayaan siri 3. Ubah hala siri 4. Minta siri ralat 5. Siri ralat bahagian pelayan

302: Pemindahan sementara berjaya , kandungan yang diminta telah dialihkan ke lokasi baharu 403: Access Forbidden 500: Ralat Dalaman Pelayan 401 mewakili tanpa kebenaran.

4. Perintah untuk mencipta pakej termampat dan nyahmampat pakej di bawah Linux

Tar.gz:

Pembungkusan: tar czf file.tar. gz file.txt

Ekstrak: tar xzf file.tar.gz

Bz2:

Pakej: bzip2 [-k] Fail

Ekstrak: bunzip2 [ -k] Fail

Gzip (hanya untuk fail, tidak mengekalkan fail asal)

Pakej: gzip file1.txt

Nyahmampat: gunzip file1.txt.gz

Zip: -r Pek direktori

: zip file1.zip file1.txt

Ekstrak: unzip file1.zip

5. Sila tuliskan maksud jenis data (int char varchar datetime text);

Int Integer char Aksara panjang tetap Varchar Aksara panjang boleh ubah Datetime Datetime type Teks Jenis teks Perbezaan antara Varchar dan char char ialah jenis aksara panjang tetap Berapa banyak ruang yang diperuntukkan banyak 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.

6. Apakah perbezaan asas antara MyISAM dan InnoDB? Bagaimanakah struktur indeks dilaksanakan?

Jenis MyISAM tidak menyokong transaksi, kunci meja dan terdedah kepada pemecahan Ia perlu dioptimumkan dengan kerap dan mempunyai kelajuan membaca dan menulis yang lebih pantas, manakala jenis InnoDB menyokong transaksi, kunci baris, dan mempunyai keupayaan pemulihan ranap. Kelajuan membaca dan menulis lebih perlahan daripada MyISAM.

Buat indeks: nama jadual amaran tambah indeks (`nama medan`)

7. Hantar kuki kepada pelanggan tanpa menggunakan kuki.

Pemahaman: Apabila session_start() dihidupkan, SID malar dijana Apabila COOKIE dihidupkan, pemalar ini kosong Apabila COOKIE dimatikan, nilai PHPSESSID disimpan dalam pemalar ini. Dengan menambahkan parameter SID selepas URL untuk menghantar nilai SESSIONID, halaman klien boleh menggunakan nilai dalam SESSION. Apabila pelanggan membuka COOKIE dan pelayan membuka SESI. Apabila penyemak imbas membuat permintaan pertama, pelayan akan menghantar COOKIE ke penyemak imbas untuk menyimpan SESSIONID Apabila penyemak imbas membuat permintaan kedua,

8 yang sedia ada. Perbezaan

Isset menentukan sama ada pembolehubah itu wujud Anda boleh lulus dalam berbilang pembolehubah jika tidak wujud, ia mengembalikan kosong menentukan sama ada pembolehubah itu kosong boleh lulus Jika Mengembalikan benar jika kosong atau palsu.

9. Berapa banyak cara yang ada untuk meneruskan redis?

Jawapan: Terdapat dua cara utama:

1) Kegigihan syot kilat

telah didayakan secara automatik dalam fail konfigurasi redis,

format ialah: save N M

bermakna jika redis diubah suai sekurang-kurangnya M kali dalam N saat, redis akan mengambil gambar ke cakera.

Sudah tentu kita juga boleh melaksanakan perintah save atau bgsave (asynchronous) secara manual untuk membuat syot kilat

2) tambahkan hanya fail AOF persistence

Terdapat tiga mod kesemuanya , seperti

appendfsync Lalai everysec adalah untuk memaksa menulis pada cakera sekali sesaat

appendfsync sentiasa Paksa menulis pada cakera setiap kali operasi tulis dilakukan

appendfsync tidak bergantung sepenuhnya pada OS dan prestasi Yang terbaik tetapi kegigihan tidak dapat dijamin

Mod ketiga adalah yang terbaik. Redis juga menggunakan mod ketiga secara lalai.

enjin storan 10.mysql

Jawapan: Terdapat dua yang biasa digunakan, satu innodb dan satu lagi myisam Perbezaan utama antara keduanya ialah

1) myisam tidak menyokong pemprosesan transaksi, tetapi innoDB menyokong pemprosesan transaksi

2) myisam tidak menyokong kunci asing, innoDB menyokong kunci asing

3) myisam menyokong penuh- carian teks, dan innoDB hanya menyokong carian teks penuh selepas MySQL versi 5.6

4) Bentuk storan data adalah berbeza Jadual mysiam disimpan dalam tiga fail: storan struktur, indeks dan data struktur sebagai fail dan indeks Dan data disimpan sebagai fail

5) myisam mempunyai prestasi yang lebih baik daripada innoDB dalam membuat pertanyaan dan menambah data, dan innoDB mempunyai prestasi yang lebih tinggi dalam pemadaman kelompok.

6) Myisam menyokong kunci meja, manakala innoDB menyokong kunci baris

11 Apakah suntikan sql dan bagaimana untuk mencegah suntikan sql?

Jawapan: Serangan suntikan SQL merujuk kepada pengguna atau penggodam yang membina input khas sebagai parameter dan menghantarnya ke dalam aplikasi web kami operasi yang diingini oleh penyerang Sebab utamanya ialah pengaturcara tidak menapis data yang dimasukkan oleh pengguna dengan berhati-hati, menyebabkan data haram menyerang sistem. Oleh itu, kita mesti menghalang suntikan SQL semasa proses pembangunan, terutamanya dari dua aspek:

1) Kaedah pemegang tempat adalah untuk mempraproses pernyataan SQL dan kemudian melaksanakan pernyataan SQL

2) Gunakan dua fungsi addslashes atau mysql_real_escape_string untuk melepaskan nilai yang dimasukkan oleh pengguna dan melepaskan beberapa aksara khas.

12. Adakah terdapat sebarang prapemprosesan yang digunakan?

Jawapan: Saya telah menggunakannya sebelum ini Dalam kelas PDO, terdapat kaedah penyediaan yang boleh melaksanakan prapemprosesan dalam kelas PDOStament boleh melakukan prapemprosesan . Satu ialah :Pemegang tempat rentetan, yang lain ialah ? pemegang tempat rentetan pas dalam tatasusunan bersekutu apabila melakukan parameter prapemprosesan dan hantaran, manakala ? Kedua-duanya tidak boleh dicampur, tetapi biasanya disyorkan untuk menggunakan: pemegang tempat rentetan.

13 Adakah anda perlu menggunakan pemprosesan anda sendiri apabila menggunakan rangka kerja

Jawapan: Secara umumnya, rangka kerja sumber terbuka yang matang mengambil kira keselamatan data, tetapi kadangkala kami Apabila beberapa penyataan SQL asli boleh digunakan, kita perlu mempertimbangkan untuk memproses kenyataan SQL sendiri. Sudah tentu, kadang-kadang kita tidak mahu menggunakan kaedah penapisan dalam rangka kerja Contohnya, apabila menggunakan editor teks, kita boleh menggunakan kaedah penapisan kita sendiri.

14. Bagaimana untuk mengoptimumkan mysql?

Jawapan: Pengoptimuman MySQL terutamanya dicapai daripada aspek berikut:

1) Perspektif reka bentuk: pemilihan enjin storan, pemilihan jenis medan, paradigma

2 ) Perspektif fungsional: Anda boleh menggunakan ciri MySQL sendiri, seperti pengindeksan, caching pertanyaan, defragmentasi, pembahagian, sub-jadual, dll.

3) Pengoptimuman pernyataan SQL: Cuba permudahkan pernyataan pertanyaan dan gunakan sebagai sedikit medan pertanyaan yang mungkin Kurangkan medan pertanyaan, optimumkan pernyataan paging, pernyataan kumpulan, dsb.

4) Gunakan sistem seni bina beban yang besar: pelayan pangkalan data dipisahkan Apabila bebanan berat, mekanisme pemisahan master-slave dan baca-tulis boleh digunakan untuk reka bentuk

5) Naik taraf pelayan pangkalan data daripada perkakasan.

15 Sila terangkan perbezaan antara lulus mengikut nilai dan lulus melalui rujukan dalam PHP. Bila hendak lulus dengan nilai dan bila hendak lulus dengan rujukan?

Pas melalui nilai: Sebarang perubahan kepada nilai dalam skop fungsi akan diabaikan di luar fungsi

Pas melalui rujukan: Sebarang perubahan kepada nilai dalam skop fungsi juga akan diabaikan di luar fungsi Mencerminkan pengubahsuaian ini

Kebaikan dan Keburukan: 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.

16. Apakah fungsi error_reporting dalam PHP?

Tetapkan tahap ralat PHP dan kembalikan tahap semasa.

17 Gunakan PHP untuk menerangkan algoritma isihan pantas. Bolehkah objek itu menjadi tatasusunan? jujukan data yang hendak diisih kepada Dua jujukan, langkah khusus ialah:

(1) Pilih satu elemen daripada jujukan, panggil elemen ini "garis dasar".

(2) Imbas tatasusunan sekali, dan susun semua elemen yang lebih kecil daripada "tapak" di hadapan tapak, dan semua elemen yang lebih besar daripada "tapak" di belakang tapak.

(3) Melalui rekursi, bahagikan setiap jujukan kepada jujukan yang lebih kecil sehingga subarray unsur yang lebih kecil daripada nilai rujukan dan subarray unsur yang lebih besar daripada nilai rujukan diisih.

18 Gunakan PHP untuk menerangkan carian berurutan dan carian binari (juga dipanggil carian separuh) mesti mempertimbangkan kecekapan Objek boleh menjadi tatasusunan tertib
//快速排序(数组排序)
function QuickSort($arr){
 $num = count($arr);
 $l=$r=0;
 for($i=1;$i<$num;$i++){
  if($arr[$i] < $arr[0]){
   $left[] = $arr[$i];
   $l++;
  }else{
   $right[] = $arr[$i];
   $r++;
  }
 }
 if($l > 1){
  $left = QuickSort($left);
 }
 $new_arr = $left;
 $new_arr[] = $arr[0];
 if($r > 1){
  $right = QuickSort($right);
 }
 for($i=0;$i<$r;$i++){
  $new_arr[] = $right[$i];
 }
 return $new_arr;
}

19 Tulis fungsi algoritma pengisihan tatasusunan dua dimensi yang serba boleh dan boleh memanggil fungsi terbina dalam PHP (array_multisort())

//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){
 if ($low <= $high){
  $mid = intval(($low+$high)/2);
  if ($array[$mid] == $k){
   return $mid;
  }elseif ($k < $array[$mid]){
   return bin_sch($array, $low, $mid-1, $k);
  }else{
   return bin_sch($array, $mid+1, $high, $k);
  }
 }
 return -1;
}
//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k){
 $array[$n] = $k;
 for($i=0; $i<$n; $i++){
  if($array[$i]==$k){
   break;
  }
 }
 if ($i<$n){
  return $i;
 }else{
  return -1;
 }
}

<. 🎜>20 .Untuk pengguna memasukkan rentetan $string, $string hanya boleh mengandungi nombor yang lebih besar daripada 0 dan koma Inggeris Sila gunakan ungkapan biasa untuk mengesahkan Jika $string tidak memenuhi keperluan, mesej ralat < akan dikembalikan 🎜>

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
 if (!is_array($arr)) {
  return false;
 }
 $keysvalue = array();
 foreach($arr as $key => $val) {
  $keysvalue[$key] = $val[$keys];
 }
 if($order == 0){
  asort($keysvalue);
 }else {
  arsort($keysvalue);
 }
 reset($keysvalue);
 foreach($keysvalue as $key => $vals) {
  $keysort[$key] = $key;
 }
 $new_array = array();
 foreach($keysort as $key => $val) {
  $new_array[$key] = $arr[$val];
 }
 return $new_array;
}
21 mod Singleton, buat objek tunggal yang dipautkan ke pangkalan data mysqli

class regx { 
 public static function check($str) { 
 if(preg_match("/^([1-9,])+$/",$str)) { 
  return true; 
 } 
 return false; 
 } 
} 
$str="12345,6"; 
if(regx::check($str)) { 
echo "suc"; 
} else { 
echo "fail"; 
}
22. Di manakah sambungan sesi PHP menyimpan data sesi secara lalai D

A) Pangkalan Data SQLite

class Db { 
 private static $instance; 
 public $handle; 
 Private function __construct($host,$username,$password,$dbname) { 
  $this->handle=NULL; 
  $this->getcon($host,$username,$password,$dbname); 
 } 
 public static function getBb() { 
  self::$instance=new Db(); 
  return self::$instance; 
 } 
 private function getcon($host,$username,$password,$dbname) { 
  if($this->handle!=NULL){ 
   return true; 
  } 
  $this->handle=mysqli_connect($host,$username,$password,$dbname); 
 } 
}
B) Pangkalan Data MySQL

C) Memori Dikongsi

D) Sistem Fail

E) Pelayan Sesi

23 fungsi strtolower() dan strtoupper() PHP boleh menyebabkan aksara Cina ditukar menjadi. aksara bercelaru apabila memasang pelayan dengan sistem bukan Cina, sila tulis Dua fungsi alternatif melaksanakan penukaran huruf rentetan yang serasi dengan teks Unikod

Jawapan: Sebabnya ialah: Bahasa Cina terdiri daripada berbilang bait, manakala hanya satu aksara Inggeris dalam sistem Inggeris mempunyai hanya satu bait , jadi sistem menjalankan pemprosesan strtolower() pada setiap bait bahasa Cina, dan bait Cina yang diubah menjadi bercelaru apabila disambung bersama (aksara yang sepadan dengan peta pengekodan yang baru dihasilkan mungkin bukan bahasa Cina)

Penyelesaian manual: Gunakan str_split(rentetan rentetan, rentetan masuk, panjang_intsplit = 1) untuk memotong mengikut setiap bait, seperti bahasa Cina, yang boleh dipotong kepada tiga bait. Jika bait yang diiktiraf adalah huruf Inggeris, ia akan ditukar.

24 Fungsi is_writeable() PHP mempunyai pepijat dan tidak dapat menentukan dengan tepat sama ada direktori/fail boleh ditulis Sila tulis fungsi untuk menentukan sama ada direktori/fail benar-benar boleh ditulis

Jawapan: Terdapat dua aspek pepijat,

1) Dalam penghentian, apabila fail hanya mempunyai atribut baca sahaja, fungsi is_writeable() mengembalikan palsu Apabila benar dikembalikan, fail itu tidak semestinya boleh ditulis.
<?php  
function mystrtoupper($a){  
    $b = str_split($a, 1);  
    $r = &#39;&#39;;  
    foreach($b as $v){  
        $v = ord($v);  
        if($v >= 97 && $v<= 122){  
            $v -= 32;  
        }  
        $r .= chr($v);  
    }  
    return $r;  
}  
 
 
$a = &#39;a中你继续F@#$%^&*(BMDJFDoalsdkfjasl&#39;;  
echo &#39;origin string:&#39;.$a."\n";  
echo &#39;result string:&#39;;  
$r = mystrtoupper($a);  
var_dump($r);
Jika ia adalah direktori, buat fail baharu dalam direktori dan semak dengan membuka fail

Jika ia adalah fail, anda boleh menguji sama ada fail itu boleh ditulis dengan membuka fail (fopen). 2) Dalam Unix, apabila safe_mode dihidupkan dalam fail konfigurasi php (safe_mode=on), is_writeable() juga tidak tersedia.

Baca fail konfigurasi untuk melihat sama ada safe_mode didayakan.

/**
* Tests for file writability
*
* is_writable() returns TRUE on Windows servers when you really can&#39;t write to
* the file, based on the read-only attribute. is_writable() is also unreliable
* on Unix servers if safe_mode is on.
*
* @access   private
* @return   void
*/
if ( ! function_exists(&#39;is_really_writable&#39;))
{
    function is_really_writable($file)
    {
    // If we&#39;re on a Unix server with safe_mode off we call is_writable
    if (DIRECTORY_SEPARATOR == &#39;/&#39; AND @ini_get("safe_mode") == FALSE)
    {
        return is_writable($file);
    }
 
    // For windows servers and safe_mode "on" installations we&#39;ll actually
    // write a file then read it. Bah...
    if (is_dir($file))
    {
        $file = rtrim($file, &#39;/&#39;).&#39;/&#39;.md5(mt_rand(1,100).mt_rand(1,100));
 
        if (($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE)
        {
            return FALSE;
        }
 
        fclose($fp);
        @chmod($file, DIR_WRITE_MODE);
        @unlink($file);
        return TRUE;
    } elseif ( ! is_file($file) OR ($fp = @fopen($file, FOPEN_WRITE_CREATE)) === FALSE) {
        return FALSE;
    }
 
    fclose($fp);
    return TRUE;
    }
}

25.PHP处理上传文件信息数组中的文件类型$_FILES[‘type’]由客户端浏览器提供,有可能是黑客伪造的信息,请写一个函数来确保用户上传的图像文件类型真实可靠

答:用getimagesize来判断上传图片的类型比$_FILES函数的type更可靠
同一个文件,使用不同的浏览器php返回的type类型是不一样的,由浏览器提供type类型的话,
就有可能被黑客利用向服务器提交一个伪装撑图片后缀的可执行文件。
可以通过getimagesize()函数来判断上传的文件类型,如果是头像文件 会返回这样的一个数组

Array
(
    [0] => 331
    [1] => 234
    [2] => 3
    [3] => width="331" height="234"
    [bits] => 8
    [mime] => image/png
);

26.如何实现PHP的安全最大化?怎样避免SQL注入漏洞和XSS跨站脚本攻击漏洞?

答:基本原则:不对外界展示服务器或程序设计细节(屏蔽错误),不相信任何用户提交的数据(过滤用户提交) 

1)屏蔽错误,将display_errors 设置为off 
2)过滤用户提交参数,这里需要注意的是不能仅仅通过浏览器端的验证,还需要经过服务器端的过滤

这里是需要注意最多的地方,因为所有用户提交的数据入口都在这里,这是过滤数据的第一步。
      1 考虑是否过滤select,insert,update,delete,drop,create等直接操作数据的命令语句
      2 使用addslashes 将所有特殊字符过滤
      3 打开magic_quotes_gpc,开启该参数数后自动将sql语句转换,将 ' 转换成  \'

3)可以考虑设置统一入口,只允许用户通过指定的入口访问,不能访问未经许可的文件等内容 
4)可以考虑对安全性要求高的文件进行来源验证,比如要想执行b.php必须先执行a.php,可以在b.php中判断来自a.php的referer,避免用户直接执行b.php

27.请写出让PHP能够在命令行下以脚本方式执行时安装PHP所必须指定的configure参数,并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?

答:由于 –enable-cli 和 –enable-cgi 同时默认有效,因此,不必再配置行中加上 –enable-cli 来使得 CLI 在 make install 过程中被拷贝到 {PREFIX}/bin/php

php -f “index.php” 
php -r “print_r(get_defined_constants());”

28.PHP的垃圾收集机制是怎样的?

说明: 
1)如果,你熟悉PHP源码,那么请从源码入手,回答些问题,会获得额外加分 
2)如果,你不熟悉PHP源码,那么尽你所能,多写点东西,包括利用自己的编程直觉得到的信息,都可以。 
3)对,则有分,错误不扣,不写无分。

答:PHP可以自动进行内存管理,清除不再需要的对象。PHP使用了引用计数(referencecounting)这种单纯的垃圾回收(garbagecollection)机制。每个对象都内含一个引用计数器,每个reference连接到对象,计数器加1。当reference离开生存空间或被设为NULL,计数器减1。当某个对象的引用计数器为零时,PHP知道你将不再需要使用这个对象,释放其所占的内存空间。

29.get和post的区别?

1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
4. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

30.如何修改会话的生存时间?

一:在php.ini中设置session.gc_maxlifetime = 1440 //默认时间
二:代码实现      $ lifeTime = 24 * 3600; //保存一天
    session_set_cookie_params($ lifeTime); 
    在session_start();

31.微信支付回调失败该如何处理?

他问的是已经支付成功后,但是回调失败了。

自己可以创建定时任务在每天的凌晨执行,去微信那边对账,然后更新数据库订单状态。

32.调用区块链接口的安全措施,有那些实现方法?

来自PHP技术交流群 群友分享

  1. 使用MD5实现对接口加签,目的是为了防止篡改数据。
  2. 基于网关实现黑明单与白名单拦截
  3. 可以使用rsa非对称加密 公钥和私钥互换
  4. 如果是开放接口的话,可以采用oath2.0协议
  5. 使用Https协议加密传输,但是传输速度慢
  6. 对一些特殊字符实现过滤 防止xss、sql注入的攻击
  7. 定期使用第三方安全扫描插件
  8. 接口采用dto、do实现参数转化 ,达到敏感信息脱敏效果
  9. 使用token+图形验证码方法实现防止模拟请求
  10. 使用对ip访问实现接口的限流,对短时间内同一个请求(ip)一直访问接口 进行限制。

33.服务器受到dos攻击,这个问题如何应付?

看看你的服务的访问日志,在防火墙中加过滤,或者在web服务器中加过滤吧。方法有以下几种。

  • 对于特定的IP访问的情况,限制IP访问
  • 限制同一IP在单位时间内的访问次数
  • 上级服务器,提高吞吐能力

是消耗服务器资源为主还是纯流量攻击?消耗资源的可以通过配置防火墙过滤规则防御中小规模的攻击。如果是纯流量攻击,考虑你用的是linode真心无解。即便你封了IP封了端口也没用,人家不管你接不接受他的请求,他都会塞满你的带宽。linode必然认为你是被流量攻击或者消耗过多资源然后给你挂起。

34.简述Linux下安装Mysql的过程?

Groupadd mysql 添加一个用户组mysql
Useradd -g mysql mysql 添加一个mysql用户指定分组为mysql
Cd /lamp/mysql 进入mysql目录
./configure –prefix=/usr/local/mysql/ –with-extra-charsets=all
Make
Make all

35.对于大流量的网站,您采用什么样的方法来解决访问量问题?

优化程序,优化数据库,如果程序和数据库已经最优化,使用以下解决方法:

  • 确定当前服务器设备是否满足流量需求。
  • 使用Memcache缓存技术,把动态内容缓存到文件中,动态网页直接调用这些文件,而不必再访问数据库。
  • 禁止外部盗链,图片和文件外部盗链会给服务器带来大量的负载压力,可以通过refer来禁止外部盗链,或者使用apache来配置禁止盗链。
  • 控制大文件的下载,大文件的下载对于非SCSI硬盘来说会占用大量的资源,导致服务器的响应能力下降。
  • 使用不同的主机分流主要流量,使服务器均衡负载。
  • 使用流量统计软件统计分析网站流量,可以知道哪些地方耗费了大量的流量,哪些页面需要再进行优化。

36.对关系型数据库而言,索引是相当重要的概念,请回答有关索引几个问题:

1)索引的目的是什么?

  • 快速访问数据表中的特定信息,提高检索速度
  • 创建唯一性索引,保证数据库表中每一行数据的唯一性
  • 加速表和表之间的连接
  • 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间

2) 索引对数据库系统的负面影响是什么?

负面影响:创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改的时候索引也要动态维护,这样就降低了数据的维护速度。

3) 为数据表建立索引的原则有哪些?

  • 在最频繁使用的、用以缩小查询范围的字段上建立索引
  • 在平频繁使用的、需要排序的字段上建立索引

4) 什么情况下不宜建立索引?

  • 对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引
  • 对于一些特殊的数据类型,不宜建立索引,比如文本字段(text),值范围较少的知道等。

37.PHP字符串中单引号与双引号的区别?

单引号不能解释变量,而双引号可以解释变量。

单引号不能转义字符,在双引号中可以转义字符。

38.求两个日期的差数,例如2021-2-5 ~ 2021-3-6 的日期差数

方法一:
<?php
class Dtime{
 function get_days($date1, $date2){
  $time1 = strtotime($date1);
  $time2 = strtotime($date2);
  return ($time2-$time1)/86400;
 }
}
$Dtime = new Dtime;
echo $Dtime->get_days(’2021-2-5′, ’2021-3-6′);
?>
方法二:
<?php
$temp = explode(‘-’, ’2021-2-5′);
$time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
$temp = explode(‘-’, ’2021-3-6′);
$time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
echo ($time2-$time1)/86400;
方法三:echo abs(strtotime(“2021-2-5″)-strtotime(“2021-3-1″))/60/60/24 计算时间差

39.有一个一维数组,里面存储整形数据,请写一个函数,将他们按从大到小的顺序排列。要求执行效率高。并说明如何改善执行效率。(该函数必须自己实现,不能使用php函数)

<?php
function BubbleSort(&$arr){
 $cnt=count($arr);
 $flag=1;
 for($i=0;$i<$cnt;$i++){
 if($flag==0){
  return;
 }
 $flag=0;
 for($j=0;$j<$cnt-$i-1;$j++){
  if($arr[$j]>$arr[$j+1]){
   $tmp=$arr[$j];
   $arr[$j]=$arr[$j+1];
   $arr[$j+1]=$tmp;
   $flag=1;
  }
 }
 }
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);

推荐学习:《PHP视频教程

Atas ialah kandungan terperinci Ringkaskan dan susun 39 soalan temuduga PHP (perkongsian ringkasan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:csdn.net. Jika ada pelanggaran, sila hubungi admin@php.cn Padam