初級php面試__附有答案

1.用php打印出前一天的時間格式是2006-5-10 22:21:21(2分)

echo date("Y-m-d G:i:s",strtotime("-1 day"));

2.echo(),print(),print_r()的區別(3分)

  • echo()是一個php語句,所以沒有返回值,能打印簡單的數據。
  • print()是一個函數,有返回值,能打印簡單的數據。
  • print_r()是一個函數,能打印複雜的(mix)數據。

如:

<?
    $value = print 'hello word<br />';
    echo "the value is $value<br />";
    $arr = array('name'=>'nowamagic','qq'=>'123456');
    print_r($arr);
?>

程序運行結果:

hello word
the value is 1
Array ( [name] => nowamagic [qq] => 123456 ) ......

3.能夠使html和php分離開使用的模板(1分)

smarty模板

4.使用哪些工具進行版本控制?(1分)

TortoiseSVN

5.如何實現字符串翻轉?(3分)

strrev("Hello world!");

6.優化mysql數據庫的方法。(4分,多寫多得)

  • 數據庫設計方面,這是DBA和Architect的責任,設計結構良好的數據庫,必要的時候,去正規化(英文是這個:denormalize,中文翻譯成啥我不知道),允許部分數據冗餘,避免JOIN操作,以提高查詢效率
  • 系統架構設計方面,表散列,把海量數據散列到幾個不同的表裏面.快慢表,快表只留最新數據,慢表是歷史存檔.集羣,主服務器Read & write,從服務器read only,或者N臺服務器,各機器互爲Master
  • (1)和(2)超越PHP Programmer的要求了,會更好,不會沒關係.檢查有沒有少加索引
  • 寫高效的SQL語句,看看有沒有寫低效的SQL語句,比如生成笛卡爾積的全連接啊,大量的Group By和order by,沒有limit等等.必要的時候,把數據庫邏輯封裝到DBMS端的存儲過程裏面.緩存查詢結果,explain每一個sql語句
  • 所得皆必須,只從數據庫取必需的數據,比如查詢某篇文章的評論數,select count(*) ... where article_id = ? 就可以了,不要先select * ... where article_id = ?然後msql_num_rows.只傳送必須的SQL語句,比如修改文章的時候,如果用戶只修改了標題,那就update ... set title = ? where article_id = ?不要set content = ?(大文本)
  • 必要的時候用不同的存儲引擎.比如InnoDB可以減少死鎖.HEAP可以提高一個數量級的查詢速度

7.php的意思(送1分)

Hypertext Preprocessor

8.mysql取得當前時間的函數和格式化日期的函數(2分)

now()         
DATE_FORMAT(date, format) .

9.實現中文字串截取無亂碼的方法。(3分)

使用mbstring擴展庫的mb_substr()截取就不會出現亂碼了

10.請簡單闡述您最得意的開發之作(4分)

11.對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?(4分)

12.用php寫出顯示客戶端ip與服務器ip的代碼(1分)

打印客戶端IP:echo $_SERVER['REMOTE_ADDR']; 或者: getenv('REMOTE_ADDR');

打印服務器IP:echo gethostbyname("http://www.nowamagic.net/")

13.語句include和require的區別是什麼?爲避免多次包含同一文件,可用(?)語句代替它們? (2分)

require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程序的最前面,PHP 程序在執行前,就會先讀入 require 所指定引入的文件,使它變成 PHP 程序網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。

include 使用方法如 include("MyIncludeFile.php"); 。這個函數一般是放在流程控制的處理部分中。PHP 程序網頁在讀到 include 的文件時,纔將它讀進來。這種方式,可以把程序執行時的流程簡單化。

爲避免多次包含同一文件,可用require_once()/include_once()語句代替它們。

14.如何修改session的生存時間(1分).

<?php
    session_start(); 
    // 保存一天 
    $lifeTime = 24 * 3600; 
    setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>

15.有一個網頁地址 http://www.phpres.com/index.html,如何得到它的內容?($1分)

$contents = file_get_contents("http://www.phpres.com/index.html");

16.在http 1.0中,狀態碼401的含義是(?);如果返回"找不到文件"的提示,則可用 header 函數,其語句爲(?);(2分)

401表示未授權;

header("HTTP/1.0 404 Not Found");

17.在php中,heredoc是一種特殊的字符串,它的結束標誌必須?(1分)

18.談談asp,php,jsp的優缺點(1分)

asp:簡單而易於維護,很適合小型網站應用,通過DCOM和MTS技術,ASP甚至還可以完成小規模的企業應用,但ASP的致命缺點就是不支持跨平臺的系統,在大型項目開發和維護上非常困難。

PHP:語法簡單,非常易學易用,很利於快速開發各種功能不同的定製網站,PHP因爲結構上的缺陷,使的PHP在複雜的大型項目上的開發和維護都比較困難。

JSP:對於網站開發來講不像PHP和ASP那樣易學易用,支持JAVA的主機也少於支持PHP的主機,這從一定程度上限制了Java技術在網站上的發展,不過在企業軟件應用上來講,MVC還是擁有相當大的優勢的,雖然其配置和部署相對其他腳本語言來說要複雜一些,但對於跨平臺的中大型企業應用系統來講,基於JAVA技術的MVC架構幾乎成爲唯一的選擇。

19.談談對mvc的認識(1分)

MVC (Model-View-Controller)模式,即模型-試圖-控制器模式,其核心思想是將整個程序代碼分成相對獨立而又能協同工作的3個組成部分,具體的功能如下:模型(Model):業務邏輯層。實現具體的業務邏輯、狀態管理的功能。視圖(View):表示層。就是與用戶實現交互的頁面,通常實現數據的輸入和輸出功能。控制器(Controller):控制層。起到控制整個業務流程的作用,實現View層跟Model層的協同工作。

20.寫出發貼數最多的十個人名字的sql,利用下表:members(id,username,posts,pass,email)(2分)

SELECT username 
FROM members
GROUP BY id 
ORDER BY count(posts) DESC 
LIMIT 0 , 10

21.請說明php中傳值與傳引用的區別。什麼時候傳值什麼時候傳引用?(2分)

按值傳遞:函數範圍內對值的任何改變在函數外部都會被忽略。按引用傳遞:函數範圍內對值的任何改變在函數外部也能反映出這些修改

優缺點:按值傳遞時,php必須複製值。特別是對於大型的字符串和對象來說,這將會是一個代價很大的操作。按引用傳遞則不需要複製值,對於性能提高很有好處。

22.在php中error_reporting這個函數有什麼作用? (1分)

error_reporting() 設置 PHP 的報錯級別並返回當前級別。

23.請寫一個函數驗證電子郵件的格式是否正確 (2分)

function checkEmail(sText)  
{ 
	var reg=/^(?:w+.?)*w+@(?:w+.?)*w+$/;  
	var email=document.getElementById(sText).value;
	if(!reg.test(email))  
	{
		alert("電子郵件檢測失敗");
	}

	else  
	{
		alert("電子郵件格式正確");
	}  
}

24.簡述如何得到當前執行腳本路徑,包括所得到參數。(2分)

echo $_SERVER['SCRIPT_FILENAME']."?".$_SERVER['QUERY_STRING'];

25.js表單彈出對話框函數是?獲得輸入焦點函數是? (2分)

1)alert(),prompt(),confirm()

2)focus()

26.js的轉向函數是?怎麼引入一個外部js文件?(2分)

window.location.href
<script type="text/javascript" src="prototype.js"></script>

27.foo()和@foo()之間有什麼區別?(1分)

PHP 支持一個錯誤控制運算符:@。當將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤信息都被忽略掉。注意: @ 運算符只對表達式有效。對新手來說一個簡單的規則就是:如果能從某處得到值,就能在它前面加上 @ 運算符。例如,可以把它放在變量,函數和include()調用,常量,等等之前。不能把它放在函數或類的定義之前,也不能用於條件結構例如 if 和 foreach 等。

28.mysql_fetch_row() 和mysql_fetch_array之間有什麼區別? (1分)

mysql_fetch_row() 從和指定的結果標識關聯的結果集中取得一行數據並作爲數組返回。每個結果的列儲存在一個數組的單元中,偏移量從 0 開始。mysql_fetch_array() 是 mysql_fetch_row() 的擴展版本。除了將數據以數字索引方式儲存在數組中之外,還可以將數據作爲關聯索引儲存,用字段名作爲鍵名。

29.下面哪個函數可以打開一個文件,以對文件進行讀和寫操作?(1分)C

(a) fget() (b) file_open() (c) fopen() (d) open_file()

30.下面哪個選項沒有將 john 添加到users 數組中? (1分) B

(a) $users[] = 'john';  
(b) array_add($users,'john');  
(C) array_push($users,'john');  
(d) $users ||= 'john';

31.下面的程序會輸入是否?(1分)

<?php 
	$num = 10;  
	function multiply(){  
		$num = $num * 10;  
	}  
	multiply();  
	echo $num;  
	//輸出10
?>

32.如何使用下面的類,並解釋下面什麼意思?(3)

class test{ 
   function get_test($num){ 
      $num=md5(md5($num)."en"); 
      return $num; 
   } 
}

雙重md5加密:

$testObject = new test();
$encryption = $testObject->Get_test("xiaotian_ls");

33.請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什麼區別(2分)

整形、固定長度字符型、可變長度字符型、時間型。char在保存的時候,後面(右邊)會用空格填充到指定的長度,在檢索的時候後面的空格會去

34.mysq自增類型(通常爲表id字段)必需將其設爲(?)字段(1分)

主鍵

35.寫出以下程序的輸出結果 (1分)

<?  
    $b=201;  
    $c=40;  
    $a=$b>$c?4:5; 
    echo $a;  
    //輸出4
?>

36.檢測一個變量是否有設置的函數?是否爲空的函數是?(2分)

isset();empty();

37.請寫出php5權限控制修飾符(3分)

默認的是public(公共) private(私有) protected(保護)

38.請寫出php5的構造函數和析構函數(2分)

如果你在一個類中聲明一個函數,命名爲__construct,這個函數將被當成是一個構造函數並在建立一個對象實例時被執行. 清楚地說,__是兩個下劃線. 就像其它任何函數一樣,構造函數可能有參數或者默認值. 你可以定義一個類來建立一個對象並將其屬性全放在一個語句(statement)中.你也可以定義一個名爲__destruct的函數,PHP將在對象被銷燬前調用這個函數. 它稱爲析構函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章