主頁 > 後端開發 > 2020最新PHP面試題(附帶答案)

2020最新PHP面試題(附帶答案)

2020-09-19 06:04:12 後端開發

1. 什么事面向物件?主要特征是什么?

面向物件是程式的一種設計方式,它利于提高程式的重用性,使程式結構更加清晰,主要特征:封裝、繼承、多型,

更多學習內容請訪問:

怎么從一名碼農成為架構師的必看知識點:目錄大全(不定期更新)

2. SESSION 與 COOKIE的區別是什么,請從協議,產生的原因與作用說明?

1、http無狀態協議,不能區分用戶是否是從同一個網站上來的,同一個用戶請求不同的頁面不能看做是同一個用戶,

2、SESSION存盤在服務器端,COOKIE保存在客戶端,Session比較安全,cookie用某些手段可以修改,不安全,Session依賴于cookie進行傳遞,

禁用cookie后,session不能正常使用,Session的缺點:保存在服務器端,每次讀取都從服務器進行讀取,對服務器有資源消耗,Session保存在服務器端的檔案或資料庫中,默認保存在檔案中,檔案路徑由php組態檔的session.save_path指定,Session檔案是公有的,

3. HTTP 狀態中302、403、 500代碼含義?

一二三四五原則: 一. 訊息系列 二 成功系列 三. 重定向系列 四. 請求錯誤系列 五. 服務器端錯誤系列

302:臨時轉移成功,請求的內容已轉移到新位置 403:禁止訪問 500:服務器內部錯誤 401代表未授權,

4. Linux 下建立壓縮包,解壓縮包的命令

Tar.gz:

打包: tar czf file.tar.gz file.txt

解壓: tar xzf file.tar.gz

Bz2:

打包: bzip2 [-k] 檔案

解壓: bunzip2 [-k] 檔案

Gzip(只對檔案,不保留原檔案)

打包: gzip file1.txt

解壓: gunzip file1.txt.gz

Zip: -r 對目錄

打包: zip file1.zip file1.txt

解壓: unzip file1.zip

5. 請寫出資料型別(int char varchar datetime text)的意思;請問 varchar 和 char有什么區別?

Int 整數 char 定長字符 Varchar 變長字符 Datetime 日期時間型 Text 文本型 Varchar 與char的區別 char是固定長度的字符型別,分配多少空間,就占用多長空間, Varchar是可變長度的字符型別,內容有多大就占用多大的空間,能有效節省空間, 由于varchar型別是可變的,所以在資料長度改變的時,服務器要進行額外的操作,所以效率比char型別低,

6. MyISAM 和 InnoDB 的基本區別?索引結構如何實作?

MyISAM型別不支持事務,表鎖,易產生碎片,要經常優化,讀寫速度較快,而InnoDB型別支持事務,行鎖,有崩潰恢復能力,讀寫速度比MyISAM慢,

創建索引:alert table tablename add index (`欄位名`)

7. 不使用cookie向客戶端發送一個cookie.

理解:session_start()開啟時,生成一個常量 SID,當COOKIE開啟時,這個常量為空,當COOKIE關閉時,這個常量中存盤了PHPSESSID的值,通過在URL后加一個SID引數來傳遞SESSIONID的值,從而使客戶端頁面可以使用SESSION里面的值, 當客戶端開啟COOKIE和服務器端開啟SESSION時, 瀏覽器第一次請求,服務器會向瀏覽器端發送一個COOKIE里面存盤SESSIONID. 當瀏覽器第二次請求時,會把已存在

8. isset() 和 empty() 區別

Isset判斷變數是否存在,可以傳入多個變數,若其中一個變數不存在則回傳假,empty判斷變數是否為空為假,只可傳一個變數,如果為空為假則回傳真,

9. 如何在頁面之間傳遞變數(至少兩種方式) ? GET,POST,COOKIE,SESSION,隱藏表單

1. 寫出匹配URL的正則運算式.

‘/^(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|cn|org)(\/[\w-\.\/\?\%\&\=]*)?/i’

2. 請寫出常見的排序演算法,并用PHP實作冒泡排序,將陣列$a = array()按照從小到大的方式進行排序,

常見的排序演算法: 冒泡排序法、快速排序法、簡單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合并排序法,

冒泡排序法的基本思想是:對待排序記錄關鍵字從后往前(逆序)進行多遍掃描,當發現相鄰兩個關鍵字的次序與排序要求的規則不符時,就將這兩個記錄進行交換,這樣,關鍵字較小的記錄將逐漸從后面向前面移動,就象氣泡在水中向上浮一樣,所以該演算法也稱為氣泡排序法,

// 冒泡排序法
Function mysort($arr){
 For($i=0; $i<count($arr); $i++){
  For($j=0; $j<count($arr)-1-$i; $j++){
   If($arr[$j] > $arr[$j+1]){
    $tmp=$arr[$j];
    $arr[$j]=$arr[$j+1];
    $arr[$j+1]=$tmp;
            }
        }
    }
 Return $arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));

3. 請說明 PHP 中傳值與傳參考的區別,什么時候傳值什么時候傳參考?
按值傳遞:函式范圍內對值的任何改變在函式外部都會被忽略

按參考傳遞:函式范圍內對值的任何改變在函式外部也能反映出這些修改

優缺點:按值傳遞時,php必須復制值,特別是對于大型的字串和物件來說,這將會是一個代價很大的操作,按參考傳遞則不需要復制值,對于性能提高很有好處,


在PHP中error_reporting這個函式有什么作用?
設定 PHP 的報錯級別并回傳當前級別,

請用正則運算式(Regular Expression)寫一個函式驗證電子郵件的格式是否正確,
if(isset($_POST['action']) && $_POST['action']==’submitted’){
 $email=$_POST['email'];
 if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){
  echo “電子郵件檢測失敗”;
 }else{
  echo “電子郵件檢測成功”;
 }
}

使用PHP描述快速排序演算法,物件可以是一個陣列?

原理:快速排序使用分治策略來把待排序資料序列分為兩個子序列,具體步驟為:

(1)從數列中挑出一個元素,稱該元素為“基準”,

(2)掃描一遍數列,將所有比“基準”小的元素排在基準前面,所有比“基準”大的元素排在基準后面,

(3)通過遞回,將各子序列劃分為更小的序列,直到把小于基準值元素的子數列和大于基準值元素的子數列排序,

//快速排序(陣列排序)
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;
}

使用PHP描述順序查找和二分查找(也叫做折半查找)演算法,順序查找必須考慮效率,物件可以是一個有序陣列

//二分查找(陣列里查找某個元素)
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;
 }
}

寫一個二維陣列排序演算法函式,能夠具有通用性,可以呼叫php內置函式(array_multisort())

//二維陣列排序, $arr是資料,$keys是排序的健值,$order是排序規則,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
 if (!is_array($arr)) {
  return false;
 }
 $keysvalue = https://www.cnblogs.com/a609251438/p/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;
}

請以空格作為間隔,拆分字串’Apple Orange Banana Strawberry’,組成陣列$fruit,

* 陣列中所有元素都用小寫字母,并按照字母先后次序排序

class sort { 
 private $str; 
 public function __construct($str) { 
  $this->str=strtolower($str); 
 } 
 private function explodes() { 
  if(empty($this->str)) return array(); 
  $arr=explode(" ",$this->str); 
  return is_array($arr)?$arr:array($arr); 
 } 
 public function sort() { 
  $explode=$this->explodes(); 
  sort($explode); 
  return $explode; 
 } 
} 
$str='Apple Orange Banana Strawberry'; 
$sortob=new sort($str); 
var_dump($sortob->sort());

對于用戶輸入一串字串$string,要求$string中只能包含大于0的數字和英文逗號,請用正則 運算式驗證,對于不符合要求的$string回傳出錯資訊

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"; 
}

請寫一段程式,在服務器創建一個檔案fruit.dat,將試題3中得到的陣列寫入到改檔案中,然后寫一段程式從檔案中讀取并還原陣列@author zhuwenqiong

class sort { 
 private $str; 
 public function __construct($str) { 
  $this->str=strtolower($str); 
 } 
 private function explodes(){ 
  if(empty($this->str)) return array(); 
  $arr=explode(" ",$this->str); 
  return is_array($arr)?$arr:array($arr); 
 } 
 public function sort() { 
  $explode=$this->explodes(); 
  sort($explode); 
  return $explode; 
 } 
} 
class file { 
 private $sort=null; 
 private $filepath; 
 public function __construct($arrobj,$path) { 
  $this->sort=$arrobj; 
  $this->filepath=$path; 
 } 
 private function getresource($filename,$mode) { 
  return fopen($this->filepath.$filename,$mode); 
 } 
 private function closeresource($resource) { 
  fclose($resource); 
 } 
 public function savefile($filename) { 
  $arr=$this->sort->sort(); 
  $fopen=$this->getresource($filename,"a+"); 
  if(!$fopen){ 
   echo "檔案打開失敗!";
   exit; 
  } 
  var_dump($arr); 
  foreach($arr as $key=>$value) { 
   fwrite($fopen,$value."\n"); 
  } 
  $this->closeresource($fopen); 
 } 
 public function readfile($filename) { 
  $this->savefile($filename); 
  $fopen=$this->getresource($filename,"r"); 
  if(!$fopen){ 
   echo "檔案打開失敗!";exit; 
  } 
  $arr=array(); 
  while(!feof($fopen)) { 
   $get=fgets($fopen); 
   if(!empty($get)) 
    $arr[]=str_replace("\n","",$get); 
  } 
  $this->closeresource($fopen); 
 return $arr; 
 } 
} 
$file=new file(new sort('Apple Orange Banana Strawberry'),"E:\\"); 
$arr=$file->readfile("fruit.dat"); 
var_dump($arr); 

單例模式,創建mysqli資料庫鏈接的單例物件

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); 
 } 
}

windows平臺, Apache Http Server啟動失敗, 排錯思路是什么?

檢查apache使用的80埠是否被占用,如果被占用,先停止占用80埠的服務,然后啟動apache服務器

PHP session擴展默認將session資料儲存在哪里? D

A) SQLite Database

B) MySQL Database

C) Shared Memory

D) File System

E) Session Server

如果你想要自動加載類,下面哪種函式宣告是正確的 C

A) function autoload($class_name)

B) function __autoload($class_name, $file)

C) function __autoload($class_name)

D) function _autoload($class_name)

E) function autoload($class_name, $file)

PHP程式使用utf-8編碼, 以下程式輸出結果是什么? B
<?php
$str = ’hello你好世界’;

echo strlen($str);

?>

A) 9 B) 13(gbk) C) 18 D) 17(utf8)

你所知道的php陣列相關的函式?

array()----創建陣列

array_combine()----通過合并兩個陣列來創建一個新陣列

range()----創建并回傳一個包含指定范圍的元素的陣列

compact()----建立一個陣列

array_chunk()----將一個陣列分割成多個

array_merge()----把兩個或多個陣列合并成一個陣列

array_slice()----在陣列中根據條件取出一段值

array_diff()----回傳兩個陣列的差集陣列

array_intersect()----計算陣列的交集

array_search()----在陣列中搜索給定的值

array_splice()----移除陣列的一部分且替代它

array_key_exists()----判斷某個陣列中是否存在指定的key

shuffle()----把陣列中的元素按隨機順序重新排列

array_flip()----交換陣列中的鍵和值

array_reverse()----將原陣列中的元素順序翻轉,創建新的陣列并回傳

array_unique()----移除陣列中重復的值

php讀取檔案內容的幾種方法和函式?

打開檔案,然后讀取,Fopen() fread()

打開讀取一次完成 file_get_contents()

以下程式,變數str什么值的情況下輸入111?

if( ! $str ) { echo 111; }

在$str值為:0,’0′,false,null,”"

你所知道的PHP的一些技術(smarty等)?

Smarty,jquery,ajax,memcache,div+css,js,mysqli,pdo,svn,thinkphp,brophp,yii

你所熟悉的PHP論壇系統 有哪些?

Discuz

你所熟悉的PHP商城系統 有哪些?

Ecshop

你所熟悉的PHP開發框架 有哪些?

Brophp,thinkphp

說說你對快取技術的了解?

1、快取技術是將動態內容快取到檔案中,在一定時間內訪問動態頁面直接呼叫快取檔案,而不必重新訪問資料庫,

2、使用memcache可以做快取,

你所知道的設計模式有哪些?

工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式

說說你對代碼管理的了解? 常使用那些代碼版本控制軟體?

通常一個專案是由一個團隊去開發,每個人將自己寫好的代碼提交到版本服務器,由專案負責人按照版本進行管理,方便版本的控制,提高開發效率,保證需要時可以回到舊版本,

常用的版本控制器:SVN

說說你對SVN的了解?優缺點?

SVN是一種版本控制器,程式員開發的代碼遞交到版本服務器進行集中管理,

SVN的優點:代碼進行集中管理,版本控制容易,操作比較簡單,權限控制方便,

缺點:不能隨意修改服務器專案檔案夾,

怎么找到PHP.ini的路徑?

一般都在php的安裝目錄下,或者window系統的windows目錄下,

PHP加速模式/擴展? PHP除錯模式/工具?

Zend Optimizer加速擴展

除錯工具:xdebug

你常用到的mysql命令?

Show databases

Show tables

Insert into 表名() values()

Update 表名 set 欄位=值 where ...

Delete from 表名 where ...

Select * from 表名 where 條件 order by ... Desc/asc limit ... Group by ... Having ...

進入mysql管理命令列的命令?

Mysql -uroot -p 回車 密碼

show databases; 這個命令的作用?

顯示當前mysql服務器中有哪些資料庫

show create database mysql; 這個命令的作用?

顯示創建資料庫的sql陳述句

show create table user; 這個命令的作用?

顯示創建表的sql陳述句

desc user; 這個命令的作用?

查詢user表的結構

explain select * from user; 這個命令的作用?

獲取select相關資訊

show processlist; 這個命令的作用?

顯示哪些執行緒正在運行

SHOW VARIABLES; 這個命令的作用?

顯示系統變數和值

SHOW VARIABLES like ’%conn%’; 這個命令的作用?

顯示系統變數名包含conn的值

LEFT JOIN 寫一個SQL陳述句?

SELECT A.id,A.class FROM A LEFT JOIN B ON A.cid=B.id

in, not ni, exist, not exist的作用和區別?

in在什么中

Not in 不在什么中

Exists 存在

Not exists 不存在

怎么找到資料庫的組態檔路徑?

在資料庫安裝目錄下,my.ini

簡述Linux下安裝PHP的程序?

安裝軟體之前先安裝編譯工具gcc、gcc-c++

拷貝原始碼包,解包解壓縮

Cd /lamp/php進入php目錄

./configure –prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安裝目錄和組態檔目錄

Make 編譯

Make install安裝

簡述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

簡述Linux下安裝apache的程序?

Cd /lamp/httpd 進去apache軟體目錄
./configure –prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr
Make
Make all

HTML/CSS/DIV/Javascritp:

1. 設計一個頁面(4個 div 第一個div 寬960px 居中;第2-4個div 3等分960px;)

<style>
Body{ Text-align:center; Margin:0; Padding:0; }
#box{ Width:960px; Margin:0 auto; }
.small{ Width:320px; Float:left; }
</style>
<div id=’box’>
<div class=’small’></div>
<div class=’small’></div>
<div class=’small’></div>
</div>

用javascript取得一個input的值?取得一個input的屬性?

document.getElementById(‘name’).value;
document.getElementById(‘name’).type;

用Jquery取得一個input的值?取得一個input的屬性?

$(“input[name='aa']“).val();
$(“input[name='aa']“).attr(‘type’);

請您寫一段ajax提交的js代碼,或者寫出ajax提交的程序邏輯,

var xmlhttp;
if(window.XMLHttpRquest){
xmlhttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlhttp=new ActiveXObject(‘Microsoft.XMLHTTP’);
}
xmlhttp.open(‘GET’,’1.php?aa=name’,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var text=xmlhttp.responseText;
}
}
}
xmlhttp.send(null);

簡述Cookie的設定及獲取程序

設定COOKIE的值:

Setcookie(名稱,值,保存時間,有效域);

獲取值:$_COOKIE['名稱'];

面向物件中介面和抽象類的區別及應用場景?

1、有抽象方法的類叫做抽象類,抽象類中不一定只有抽象方法,抽象方法必須使用abstract關鍵字定義,

2、介面中全部是抽象方法,方法不用使用abstract定義,

3、當多個同類的類要設計一個上層,通常設計為抽象類,當多個異構的類要設計一個上層,通常設計為介面,

用面向物件來實作A物件繼承B和C物件

Interface B{ ... }

Interface C{ ... }

Class A implements B,C{ ... }

寫出Smarty模板引擎中你最常用的關鍵詞

Assign Display Foreach

Section Loop Item

$smarty Now Const get

 

 

l 增加一個欄位性別sex,寫出修改陳述句

Alert table user add sex enum(’0′,’1′);

查詢出年齡介于20歲到30歲之間的用戶

Select * from user where age>20 and age<30

如果是一個Web頻繁訪問的查詢,上題的查詢如何優化?

可對where后面的欄位 age 建立索引,也可對陳述句建立存盤程序,

echo(),print(),print_r()的區別?

Echo,print是PHP陳述句, print_r是函式,

Print()只能列印出簡單型別變數的值(如int,string),有回傳值,

print_r()可以列印出復雜型別變數的值(如陣列,物件)

echo 輸出一個或者多個字串,無回傳值

什么是模板技術、能夠使HTML和PHP分離開使用的模板?

模板技術就是使程式的邏輯代碼和界面分開的技術,

能夠使HTML和PHP分開的模板有:Smarty、Template、PHPlib Template、FastTemplate

對于大流量的網站,您采用什么樣的方法來解決訪問量問題?

優化程式,優化資料庫,如果程式和資料庫已經最優化,使用以下解決方法:

1、確定當前服務器設備是否滿足流量需求,

2、使用Memcache快取技術,把動態內容快取到檔案中,動態網頁直接呼叫這些檔案,而不必再訪問資料庫,

3、禁止外部盜鏈,圖片和檔案外部盜鏈會給服務器帶來大量的負載壓力,可以通過refer來禁止外部盜鏈,或者使用apache來配置禁止盜鏈,

4、控制大檔案的下載,大檔案的下載對于非SCSI硬碟來說會占用大量的資源,導致服務器的回應能力下降,

5、使用不同的主機分流主要流量,使服務器均衡負載,

6、使用流量統計軟體統計分析網站流量,可以知道哪些地方耗費了大量的流量,哪些頁面需要再進行優化,

mysql_fetch_row() 和mysql_fetch_array之間有什么區別?

Mysql_fetch_row()是從結果集中取出一行作為列舉陣列,mysql_fetch_array()是從結果集中取出一行作為索引陣列或關聯陣列或兩種方式都有,

實作中文字串截取無亂碼的方法

Mb_substr();

用PHP寫出顯示客戶端IP與服務器IP的代碼

獲取客戶端IP:$_SERVER(“REMOTE_ADDR”);

獲取服務器端IP:$_SERVER["SERVER_ADDR"];

有一個網頁地址, 比如PHP開發資源網主頁: http://www.phpres.com/index.html,如何得到它的內容?

獲取網頁內容:

$url=”http://www.phpres.com/index.html“;
$str=file_get_contents($url);
或 $ch=curl_init();
 curl_setopt($ch,CURLOPT_URL,’’);
 curl_setopt($ch,CURLOPT_HEADER,0);
 curl_exec($ch);
 curl_close($ch);

請寫一個函式驗證電子郵件的格式是否正確

function checkemail($email){
echo preg_match(‘/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+\.[0-9a-zA-Z]+$/’,$email)?’email格式正確‘:’email格式不正確‘;
}

簡述如何得到當前執行腳本路徑,包括所得到引數

用$_SERVER['SCRIPT_FILENAME'].$_SERVER['REQUEST_URI'];取得當前頁面的完整路徑和引數,

取得引數:$_SERVER['QUERY_STRING'];

JS表單彈出對話框函式是?獲得輸入焦點函式是?

Alert(); focus();

寫一個函式,算出兩個檔案的相對路徑

如 $a = ’/a/b/c/d/e.php’;

$b = ’/a/b/12/34/c.php’;

計算出 $b 相對于 $a 的相對路徑應該是 http://www.cnblogs.com/c/d將()添上

$a=”http://www.cnblogs.com/a/b/c/d/e.php”;

$b=”http://www.cnblogs.com/a/b/12/34/c.php”;

$ainfo=parse_url($a);
$binfo=parse_url($b);
 
$apath=ltrim($ainfo['path'],'/');
$bpath=ltrim($binfo['path'],'/');
 
$arr=explode('/',$apath);
$brr=explode('/',$bpath);
$flag=false;
for($i=0;$i<count($arr);$i++){
 if($arr[$i]!==$brr[$i]){
  $ab[$i]='..';
  if(!$flag){
   for($j=$i;$j<count($brr);$j++){
    $bb[]=$brr[$j];
   }
   $flag=true;
  }
 }
}
$cha=array_merge($ab,$bb);
$cha=implode('/',$cha);
print_r($cha); 

寫一個函式,能夠遍歷一個檔案夾下的所有檔案和子檔案夾,

function my_scandir($dir){
     $files = array();
     if ( $handle = opendir($dir) ){
         while ( ($file = readdir($handle)) !== false ) {
             if ( $file != ".." && $file != "." ) {
             if ( is_dir($dir . "/" . $file) ) {
                     $files[$file] = scandir($dir . "/" . $file);
                 }else {
                     $files[] = $file;
                 }
             }
         }
         closedir($handle);
         return $files;
     }
}

資料庫索引有幾類,分別是什么?什么時候該用索引?

普通索引、主鍵索引、唯一索引

并非所有的資料庫都以相同的方式使用索引,作為通用規則,只有當經常查詢列中的資料時才需要在表上創建索引,

寫幾個魔術方法并說明作用?

__call()當呼叫不存在的方法時會自動呼叫的方法

__autoload()在實體化一個尚未被定義的類是會自動呼叫次方法來加載類檔案

__set()當給未定義的變數賦值時會自動呼叫的方法

__get()當獲取未定義變數的值時會自動呼叫的方法

__construct()構造方法,實體化類時自動呼叫的方法

__destroy()銷毀物件時自動呼叫的方法

__unset()當對一個未定義變數呼叫unset()時自動呼叫的方法

__isset()當對一個未定義變數呼叫isset()方法時自動呼叫的方法

__clone()克隆一個物件

__tostring()當輸出一個物件時自動呼叫的方法

$_REQUEST、$_POST、$_GET、$_COOKIE、$_SESSION、$_FILES的意思是什么?

它們都是PHP預定義變數

$_REQUEST用來獲取post或get方式提交的值

$_POST用來獲取post方式提交的值

$_GET用來獲取get方式提交的值

$_COOKIE用來獲取cookie存盤的值

$_SESSION用來獲取session存盤的值

$_FILES用來獲取上傳檔案表單的值

陣列中下標最好是什么型別的,為什么?

陣列的下標最好是數字型別的,數字型別的處理速度快,

++i和i++哪一個效率高,為什么?

++i效率比i++的效率更高,因為++i少了一個回傳i的程序,

magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?

Magic_quotes_gpc()是php組態檔中的,如果設定為on則會自動POST,GET,COOKIE中的字串進行轉義,在‘之前加\

Magic_quotes_runtime()是php中的函式,如果引數為true則會資料庫中取出來的單引號、雙引號、反斜線自動加上反斜杠進行轉義,

框架中什么是單一入口和多入口,單一入口的優缺點?

1、多入口就是通過訪問不同的檔案來完成用戶請求,

單一入口指web程式所有的請求都指向一個腳本檔案的,

2、單一入口更容易控制權限,方便對http請求可以進行安全性檢查,

缺點:URL看起來不那么美觀,特別是對搜索引擎來說不友好,

你對Memcach的理解,優點有哪些?

Memcache是一種快取技術,在一定的時間內將動態網頁經過決議之后保存到檔案,下次訪問時動態網頁就直接呼叫這個檔案,而不必在重新訪問資料庫,使用memcache做快取的好處是:提高網站的訪問速度,減輕高并發時服務器的壓力,

Memcache的優點:穩定、配置簡單、多機分布式存盤、速度快,

對關系型資料庫而言,索引是相當重要的概念,請回答有關索引幾個問題:

a) 索引的目的是什么?

1、快速訪問資料表中的特定資訊,提高檢索速度

2、創建唯一性索引,保證資料庫表中每一行資料的唯一性

3、加速表和表之間的連接

4、使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間

b) 索引對資料庫系統的負面影響是什么?

負面影響:創建索引和維護索引需要耗費時間,這個時間隨著資料量的增加而增加;索引需要占用物理空間,不光是表需要占用資料空間,每個索引也需要占用物理空間;當對表進行增、刪、改的時候索引也要動態維護,這樣就降低了資料的維護速度,

c) 為資料表建立索引的原則有哪些?

1、在最頻繁使用的、用以縮小查詢范圍的欄位上建立索引

2、在平頻繁使用的、需要排序的欄位上建立索引

d) 什么情況下不宜建立索引?

1、對于查詢中很少涉及的列或者重復值比較多的列,不宜建立索引

2、對于一些特殊的資料型別,不宜建立索引,比如文本欄位(text),值范圍較少的知道等,

web應用中,資料庫的讀取頻率遠高于寫入頻率, 如何優化MySQL而應對此種情景?

使用memcache快取技術,將動態資料快取到檔案,訪問動態頁面時直接呼叫快取檔案,而不必重新訪問資料庫,這樣就減少了查詢資料庫的次數,

如果網站的訪問量很大,可以把資料庫讀寫服務器分開,使用多臺服務器去處理資料庫查詢,使用較少的服務器去處理資料庫的寫入和修改,

include與require的區別?

1.include()在執行檔案時每次都要進行讀取和評估

require()檔案只處理一次(實際上檔案內容替換了require()陳述句)

2.require()通常放在PHP腳本程式的最前面

include()的使用和require()一樣,一般放在流程控制的處理區段中,PHP腳本檔案讀到include()陳述句時,才將它包含的檔案讀進來,這種方式,可以把程式執行時的流程簡單化

3,require()和include()陳述句是語言結構,不是真正的函式,可以像PHP的其他語言結構一樣

4,include_once()和require_once()陳述句也是在腳本執行期間包括并運行指定檔案,與include()require()唯一的區別是如果檔案中的代碼已經被包括了,則不會再次包括.

5,require()包含檔案失敗,停止執行,給出錯誤(致命的)

include()常用于動態包含.

通常是自動加載的檔案,即使加載出錯,整個程式還是繼續執行

一個頁面宣告,另一個頁面呼叫

包函檔案失敗,繼續向下執行,回傳一條警告

PHP字串中單引號與雙引號的區別?

單引號不能解釋變數,而雙引號可以解釋變數,

單引號不能轉義字符,在雙引號中可以轉義字符,

php中,模板引擎的目的是什么? 你用過哪些模板引擎?

使用模板引擎的目的是使程式的邏輯代碼和html界面代碼分離開,是程式的結構更清晰,

使用過的模板引擎:Smarty、ThinkPHP的ThinkTemplate

指出以下代碼片段中的SQL注入漏洞以及解決方法(magic_quotes_gpc = off)
mysql_query(“select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%’”, $link);

注入漏洞主要存在用戶提交的資料上,這里的注入漏洞主要是$_GET[catid]和$_GET[keyword]

解決注入漏洞:

$_GET[catid]=intval($_GET[catid]);

$sql=”select id,title from content where catid=’{$_GET[catid]}’ and title like ’%$_GET[keywords]%”;

$sql=addslashes($sql);

Mysql_query($sql);

分別指出php.ini中 magic_quotes_gpc, magic_quotes_runtime兩項引數的作用.

Magic_quotes_gpc的作用是在POST、GET、COOKIE資料上使用addslashes()自動轉義,

Magic_quotes_runtime引數的作用是設定狀態,當狀態為0時則關閉自動轉義,設定為1則自動轉義,將資料庫中取出來的單引號、雙引號、反斜線這些字符加上反斜杠轉義,

寫出以下php代碼的運行結果:
<?php
function foo($i) {
$i++;
echo $i ;
}

function bar(&$i) {

}
$i = 10 ;
echo $i++ , ++$i; 輸出:10,12
foo($i); 輸出:13
bar($i); 輸出:無輸出


如何快速下載一個遠程http服務器上的圖片檔案到本地?

$file=”";

$fp=fopen($file,’rb’);

$img=fread($fp,10000);

$dir=”./”;

$local=fopen($dir.’/’.basename($file),’w');

Fwrite($local,$img);

什么是時間戳? 如何取得當前時間戳?

時間戳是從1970年1月1日 00:00:00到指定日期的秒數,

獲取當前時間戳:time()

了解XSS攻擊嗎? 如何防止 ?

XSS是跨站腳本攻擊,首先是利用跨站腳本漏洞以一個特權模式去執行攻擊者構造的腳本,然后利用不安全的Activex控制元件執行惡意的行為,

使用htmlspecialchars()函式對提交的內容進行過濾,使字串里面的特殊符號物體化,

SQL注入漏洞產生的原因 ? 如何防止?

SQL注入產生的原因:程式開發程序中不注意規范書寫sql陳述句和對特殊字符進行過濾,導致客戶端可以通過全域變數POST和GET提交一些sql陳述句正常執行,

防止SQL注入:

1、開啟組態檔中的magic_quotes_gpc和magic_quotes_runtime設定

2、執行sql陳述句使用addslashes進行sql陳述句轉換

3、Sql陳述句書寫盡量不要省略小引號和單引號

4、過濾掉sql陳述句中的一些關鍵字:update、insert、delete、select、*

5、提高資料庫表和欄位的命名技巧,對一些重要的欄位根據程式的特點命名,取不易被猜到的,

6、Php組態檔中設定register_globals為off,關閉全域變數注冊

7、控制錯誤資訊,不要再瀏覽器上輸出錯誤資訊,將錯誤資訊寫到日志檔案中,

一個位元組占多少bit ? 一個IPv4地址占幾個位元組? 一個IPv6地址呢?

一個位元組占8bit,一個IPV4占用4位元組,一個IPV6占用16位元組,

142.M ADSL寬帶連接, 理想情況下, 最大下載速度是多少KB/s ?

256KB/s

143.請寫出一個正則運算式,用于匹配一個HTML檔案中<img />標記中的圖片地址

$url=”<img src=https://www.cnblogs.com/a609251438/p/’11.jpg’/>”;

/<img[\s]*src=https://www.cnblogs.com/a609251438/p/['|\"](.*)['|\"][\s]*\/>/

145.Fatal error: Call to undefined method ge_user() in /website/index.php on line 39

呼叫了未定義的方法ge_user(),檢查程式中有沒有定義此方法

146.Fatal error: Class ’client’ not found in /website/index.php on line 173

類client沒有找到,檢查檔案中有沒有client類,或者有沒有包含client類檔案

Warning: Cannot modify header information - headers already sent by (output started at /website/index.php:1) in /website/index.php on line 3

提示檔案前面有輸出,檢查是否有輸出,或者編碼

148.Warning:session_start(): open(/website/tmp/sess_47e067121facf033785f9a1cb16d243b, O_RDWR) failed: No such file or directory (2) in /website/index.php on line 10

沒有找到檔案或目錄,檢查檔案是否存在

149.Parse error: syntax error, unexpected T_STRING in /website/index.php on line 18

18行語法錯誤,檢查語法

150.Warning:fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in /website/index.php on line 2

沒有找到welcome.txt檔案,檢查檔案是否存在

1、抓取遠程圖片到本地,你會用什么函式?

fsockopen, A

3、用PHP列印出前一天的時間,列印格式是2007年5月10日22:21:21

Echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));

4、javascript能否定義二維陣列,如果不能你如何解決?

javascript不支持二維陣列定義,可以用arr[0] = new array()來解決

5、假設a.html和b.html在同一個檔案夾下面,用javascript實作當打開a.html五秒鐘后,自動跳轉到b.html,

<script>
function go2b(){
 window.location = “b.html”;
 window.close();
}
setTimeout( “go2b()”,5000 ); //5秒鐘后自動執行go2b()
</script>
 

//正在瀏覽當前頁面用戶的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"].”<br />”;
//查詢(query)的字串(URL 中第一個問號 ? 之后的內容):id=1&bi=2
echo $_SERVER["QUERY_STRING"].”<br />”;
//當前運行腳本所在的檔案根目錄:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"].”<br />”;


7、在HTTP 1.0中,狀態碼 401 的含義是未授權____;如果回傳“找不到檔案”的提示,則可用 header 函式,其陳述句為header(“HTTP/1.0 404 Not Found”);
401表示未授權;header(“HTTP/1.0 404 Not Found”);

9、把 John 新增到 users 陣列?

$users[] = ‘john’; array_push($users,‘john’);

在PHP中error_reporting這個函式有什么作用?
error_reporting() 設定 PHP 的報錯級別并回傳當前級別,

13、如何修改SESSION的生存時間(1分).

方法1:將php.ini中的session.gc_maxlifetime設定為9999重啟apache

方法2:$savePath = “./session_save_dir/”;

$lifeTime = 小時 * 秒;

session_save_path($savePath);

session_set_cookie_params($lifeTime);

session_start();

方法3:

setcookie() and session_set_cookie_params($lifeTime);

14、有一個網頁地址, 比如PHP開發資源網主頁: http://www.phpres.com/index.html,如何得到它的內容?($1分)

方法1(對于PHP5及更高版本):

$readcontents = fopen(“http://www.phpres.com/index.html”, “rb”);
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents(“http://www.phpres.com/index.html”);

16、寫一個函式,盡可能高效的,從一個標準 url 里取出檔案的擴展名

例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

答案1:

function getExt($url){
$arr = parse_url($url);
$file = basename($arr['path']);
$ext = explode(“.”,$file);
return $ext[1];
}

答案2:

function getExt($url) {
$url = basename($url);
$pos1 = strpos($url,”.”);
$pos2 = strpos($url,”?”);
if(strstr($url,”?”)){
Return substr($url,$pos1 + 1,$pos2 – $pos1 – 1);
} else {
return substr($url,$pos1);
}
}

使用五種以上方式獲取一個檔案的擴展名

要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必須使用PHP自帶的處理函式進行處理,方法不能明顯重復,可以封裝成函式 get_ext1($file_name), get_ext2($file_name)
function get_ext1($file_name){
return strrchr($file_name, ‘.’);
}
function get_ext2($file_name){
return substr($file_name,strrpos($file_name, ‘.’));
}
function get_ext3($file_name){
return array_pop(explode(‘.’, $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p['extension'];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ‘.’)));
}
18、<?php
$str1 = null;
$str2 = false;
echo $str1==$str2 ? ‘相等’ : ‘不相等’;
$str3 = ”;
$str4 = 0;
echo $str3==$str4 ? ‘相等’ : ‘不相等’;
$str5 = 0;
$str6 = ’0′;
echo $str5===$str6 ? ‘相等’ : ‘不相等’;
?>

相等 相等 不相等

MySQL資料庫中的欄位型別varchar和char的主要區別是什么?那種欄位的查找效率要高,為什么?
Varchar是變長,節省存盤空間,char是固定長度,查找效率要varchar型快,因為varchar是非定長,必須先查找長度,然后進行資料的提取,比char定長型別多了一個步驟,所以效率低一些

請使用JavaScript寫出三種產生一個Image 標簽的方法(提示:從方法、物件、HTML角度考慮)

(1)var img = new Image();
(2)var img = document.createElement(“image”)
(3)img.innerHTML = “<img src=https://www.cnblogs.com/a609251438/p/”xxx.jpg” />”

請描述出兩點以上XHTML和HTML最顯著的區別
(1)XHTML必須強制指定檔案型別DocType,HTML不需要
(2)XHTML所有標簽必須閉合,HTML比較隨意

寫出三種以上MySQL資料庫存盤引擎的名稱(提示:不區分大小寫)
MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個引擎

求兩個日期的引數,例如2007-2-5 ~ 2007-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(’2007-2-5′, ’2007-3-6′);
?>
方法二:
<?php
$temp = explode(‘-’, ’2007-2-5′);
$time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
$temp = explode(‘-’, ’2007-3-6′);
$time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
echo ($time2-$time1)/86400;
方法三:echo abs(strtotime(“2007-2-1″)-strtotime(“2007-3-1″))/60/60/24 計算時間差

請寫一個函式,實作以下功能:
字串“open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”,
方法:
function str_explode($str){
$str_arr=explode(“_”,$str);$str_implode=implode(” “,$str_arr); $str_implode=implode
(“”,explode(” “,ucwords($str_implode)));
return $str_implode;
}
$strexplode=str_explode(“make_by_id”);print_r($strexplode);
方法二:$str=”make_by_id!”;
$expStr=explode(“_”,$str);
for($i=0;$i<count($expStr);$i++){
echo ucwords($expStr[$i]);
}

方法三:echo str_replace(‘ ‘,”,ucwords(str_replace(‘_’,’ ‘,’open_door’)));

一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數,用SQL陳述句及視圖、存盤程序分別實作,
DELIMITER //
create procedure proc_countNum(in columnId int,out rowsNo int)
begin
select count(*) into rowsNo from member where member_id=columnId;
end
call proc_countNum(1,@no);
select @no;
方法:視圖:
create view v_countNum as select member_id,count(*) as countNum from member group by
member_id
select countNum from v_countNum where member_id=1

js中網頁前進和后退的代碼

前進: history.forward();=history.go(1);

后退: history.back();=history.go(-1);

echo count(“abc”); 輸出什么?
答案:1

count — 計算陣列中的單元數目或物件中的屬性個數

int count ( mixed$var [, int $mode ] ), 如果 var 不是陣列型別或者實作了 Countable 介面的物件,將回傳1,有一個例外,如果 var 是 NULL 則結果是 0,

對于物件,如果安裝了 SPL,可以通過實作 Countable 介面來呼叫 count(),該介面只有一個方法 count(),此方法回傳 count() 函式的回傳值,

有一個一維陣列,里面存盤整形資料,請寫一個函式,將他們按從大到小的順序排列,要求執行效率高,并說明如何改善執行效率,(該函式必須自己實作,不能使用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);

30、請舉例說明在你的開發程序中用什么方法來加快頁面的加載速度
要用到服務器資源時才打開,及時關閉服務器資源,資料庫添加索引,頁面可生成靜態,圖片等大檔案單獨服務器,使用代碼優化工具,

31、.以下的代碼會產生什么?為什么?
$num =10;
function multiply(){
$num =$num *10;
}
multiply();
echo $num;
由于函式 multiply() 沒有指定 $num 為全域變數(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10,

HTTP協議中GET、POST和HEAD的區別?

HEAD: 只請求頁面的首部,

GET: 請求指定的頁面資訊,并回傳物體主體,

POST: 請求服務器接受所指定的檔案作為對所標識的URI的新的從屬物體,

(1)HTTP 定義了與服務器互動的不同方法,最基本的方法是 GET 和 POST,事實上 GET 適用于多數請求,而保留 POST 僅用于更新站點,

(2)在FORM提交的時候,如果不指定Method,則默認為GET請 求,Form中提交的資料將會附加在url之后,以?分開與url分開,字母數字字符原樣發送,但空格轉換為“+“號,其它符號轉換為%XX,其中XX為 該符號以16進制表示的ASCII(或ISO Latin-1)值,GET請求請提交的資料放置在HTTP請求協議頭中,而POST提交的資料則放在物體資料中;

GET方式提交的資料最多只能有1024位元組,而POST則沒有此限制,

(3)GET 這個是瀏覽器用語向服務器請求最常用的方法,POST這個方法也是用來傳送資料的,但是與GET不同的是,使用POST的時候,資料不是附在URI后面傳遞的,而是要做為獨立的行來傳遞,此時還必須要發送一個Content_length標題,以標明資料長度,隨后一個空白行,然后就是實際傳送的資料,網頁的表單通常是用POST來傳送的,

更多學習內容請訪問:

怎么從一名碼農成為架構師的必看知識點:目錄大全(不定期更新)

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/79313.html

標籤:PHP

上一篇:Mybatis-Plus

下一篇:PHP嚴重致命錯誤處理:php Fatal error: Cannot redeclare class or function【轉】

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more