1、面試題web應用伺服器有哪些
web伺服器是應用程序運行的一個基本環境.
如果一個網站只有web伺服器,是不能運行的.每台電腦都可以通過添加某些組件來組建web伺服器.其實這只能說有了存放網頁的一個基本空間.一個網站除了伺服器與網頁程序外,還需要域名等要素.
web伺服器常見的有windows和 UNX UNX我接觸的少,一般windows使用的是IIS.
這跟瀏覽器直接讀取與否無關 ,最先的網頁是靜態的,後來才出現動態的,也就是你所說的asp什麼的,靜態的時候瀏覽器只是被動的接受web伺服器的數據,動態時代來臨,出現了瀏覽器與web伺服器的交互,也就是瀏覽器首先將瀏覽請求發送給web伺服器上的程序,程序通過計算將某數據從資料庫讀出來,用網頁的形式再傳達給瀏覽器 .
web伺服器只是一個運行環境,你想這是由誰來完成的.web伺服器與web程序的關系是,什麼樣的web伺服器決定了相應的web程序,比如,默認的IIS服務只能運行asp而不能運行php和aspx、cgi當然這都是可以通過安裝相應的程序腳本來實現的,所以,如過你去一家IDC買伺服器首先要了解該伺服器支持什麼樣的腳本語言.
2、什麼是http 前端面試題 csdn
超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網路協議。所有的WWW文件都必須遵守這個標准。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。1960年美國人Ted Nelson構思了一種通過計算機處理文本信息的方法,並稱之為超文本(hypertext),這成為了HTTP超文本傳輸協議標准架構的發展根基。Ted Nelson組織協調萬維網協會(World Wide Web Consortium)和互聯網工程工作小組(Internet Engineering Task Force )共同合作研究,最終發布了一系列的RFC,其中著名的RFC 2616定義了HTTP 1.1。
HTTP是一個客戶端和伺服器端請求和應答的標准(TCP)。客戶端是終端用戶,伺服器端是網站。通過使用Web瀏覽器、網路爬蟲或者其它的工具,客戶端發起一個到伺服器上指定埠(默認埠為80)的HTTP請求。(我們稱這個客戶端)叫用戶代理(user agent)。應答的伺服器上存儲著(一些)資源,比如HTML文件和圖像。(我們稱)這個應答伺服器為源伺服器(origin server)。在用戶代理和源伺服器中間可能存在多個中間層,比如代理,網關,或者隧道(tunnels)。盡管TCP/IP協議是互聯網上最流行的應用,HTTP協議並沒有規定必須使用它和(基於)它支持的層。 事實上,HTTP可以在任何其他互聯網協議上,或者在其他網路上實現。HTTP只假定(其下層協議提供)可靠的傳輸,任何能夠提供這種保證的協議都可以被其使用。
通常,由HTTP客戶端發起一個請求,建立一個到伺服器指定埠(默認是80埠)的TCP連接。HTTP伺服器則在那個埠監聽客戶端發送過來的請求。一旦收到請求,伺服器(向客戶端)發回一個狀態行,比如"HTTP/1.1 200 OK",和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在於(打開)一個網頁必須傳送很多數據,而TCP協議提供傳輸控制,按順序組織數據,和錯誤糾正。
通過HTTP或者HTTPS協議請求的資源由統一資源標示符(Uniform Resource Identifiers)(或者,更准確一些,URLs)來標識。
HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW伺服器傳輸超文本到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網路傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。
HTTP是客戶端瀏覽器或其他程序與Web伺服器之間的應用層通信協議。在Internet上的Web伺服器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他網際網路/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成。
我們在瀏覽器的地址欄里輸入的網站地址叫做URL (Uniform Resource Locator,統一資源定位符)。就像每家每戶都有一個門牌地址一樣,每個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本傳輸協議(HTTP),將Web伺服器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。
3、PHP面試題如何防止伺服器資源被其他網站盜用,並寫出相關代碼?
放在非網站目錄下,通過PHP腳本去讀取資源輸出到瀏覽器
WEB伺服器安裝防盜鏈軟體,使用PHP生成驗證URL,然後訪問資源
4、Java面試題:常用的Web伺服器有哪些
javaweb實習生面試需要准備些什麼,一般會出什麼筆試面試題?呵呵轉型會問問,i++,++i。以及線程方面的,還有一些資料庫的語句比如回滾還有一些查詢語句,post和get區別,面試看面試官:一種是根據你說的問你,比如你做過什麼項目讓你介紹,根據你說的項目問你一些東西。一種是著急用人的,會問你一些他們要做的項目方面的技術問題,這個是比較看運氣。建議:最好能熟練的掌握SSH和SSI架構或許會問你未來規劃,其實這個很重要,建議:說你對技術的規劃,不要說你的職位和公司還有工資的規劃
5、資料庫存儲過程有哪些,面試題
資料庫存儲過程有哪些
/*
系統存儲過程很多,有些常用,有些不常用
常用:
sp_attach_db 附加資料庫到一個伺服器中
sp_columns 返回在當前環境中列的信息
sp_databases 列出當前系統中的資料庫
sp_configure 顯示或修改當前伺服器的全局配置
sp_depends 顯示資料庫對象的依賴信息
sp_executesql 執行動態的T-SQL語句
sp_help 報告有關資料庫對象的信息
sp_helpdb 返回指定資料庫或全部資料庫的信息
sp_helptext 顯示規則、默認值、存儲過程、觸發器、視圖等的未加密的文本定義信息
sp_indexes 返回指定遠程表的索引信息
sp_lock 返回有關鎖的信息
sp_password 增加或者修改指定login的口令
sp_rename 更改用戶創建的資料庫對象名稱
sp_renamedb 更改資料庫名稱
sp_spaceused 顯示資料庫的空間使用情況
sp_tables 返回在當前環境中可以被查詢的對象的列表
sp_who 提供當前用戶和進程的信息
不常用:
sp_addlinkedserver 創建一個允許執行分布式查詢的鏈接伺服器
sp_addlinkedsrvlogin 在本地伺服器和遠程伺服器之間創建login帳戶的映射關系
sp_addlogin 創建一個新的login帳戶
sp_add_agent_parameter 在代理文件中增加一個參數
sp_add_agent_profile 為復制代理增加一個代理文件
sp_add_alert 創建一個警報
sp_add_category 在伺服器上,增加一種作業、警報或者操作員的特定分類
sp_add_data_file_recover_suspect_db 當資料庫復原不能完成時,向文件組增加一個數據文件
sp_add_file_recover_suspect_db 對於復原有問題的資料庫增加一個文件
sp_add_job 增加一個sql server agent可以執行的作業
sp_add_jobschele 為作業創建調度
sp_add_jobserver 把指定的作業增加到指定伺服器上
sp_add_jobstep 在作業中增加一步或一個操作
sp_add_log_file_recover_suspect_db 當資料庫復原不能完成時,向文件組增加一個日誌文件
sp_add_notification 為警報創建一個通知
sp_add_operator 為警報或者作業創建一個操作員
sp_add_targetservergroup 增加指定的伺服器組
sp_add_targetsvrgrp_member 在指定的目標伺服器組增加一個目標伺服器
sp_addalias 在資料庫中為login帳戶增加一個別名
sp_addapprole 在資料庫中增加一個特殊的應用程序角色
sp_addarticle 創建文章,並把該文章添加到出版物中
sp_adddistpublisher 創建一個使用本地分布伺服器的出版伺服器
sp_adddistributiondb 在分布伺服器上創建一個新的distribution資料庫
sp_adddistributor 增加一個分布伺服器
sp_addextendedproc 在系統中增加一個擴展存儲過程
sp_addgroup 在當前資料庫中增加一個組
sp_addmergearticle 為一個已有的合並出版物創建一個文章
sp_addmergefilter 為了連接另外一個表,創建一個合並過濾器
sp_addmergepublication 創建一個新的合並出版物
sp_addmergepullsubscription 增加一個拉回類型的訂閱物
sp_addmergepullsubscription_agent 在訂閱伺服器上,為合並拉回訂閱物創建一個代理
sp_addmergesubscription 創建一個推出或者拉回類型的訂閱物
sp_addmessage 在系統中增加一個新的錯誤消息
sp_addpublicaton 創建一個快照復制或者事務復制出版物
sp_addpublicaton_snapshot 創建一個快照代理
sp_addpullsusscription 在當前訂閱伺服器的資料庫中增加一個拉回或者匿名訂閱物
sp_addpullsusscription_agent 在訂閱伺服器的資料庫中增加一個新的代理
sp_addremotelogin 在本地伺服器上增加一個遠程login帳戶,允許執行遠程存儲過程調用
sp_addrole 在當前資料庫中增加一個角色
sp_addrolemember 為當前資料庫中的一個角色增加一個安全性帳戶
sp_addserver 添加一個遠程或者本地伺服器
sp_addsrvrolemember 為固定的伺服器角色增加一個成員
sp_addsubscriber 增加一個新的訂閱伺服器
sp_addsubscriber_schele 為分布代理和合並代理增加一個調度
sp_addsubscription 訂閱文章並且設置訂閱伺服器的狀態
sp_addsynctrigers 在訂閱伺服器上創建一個立即修改觸發器
sp_addtabletocontents 在合並跟蹤表中插入一個參考
sp_addtype 創建一個用戶定義的數據類型
sp_admpdevice 增加一個備份設備
sp_adser 在當前資料庫中為一個新用戶增加一個安全性帳戶
sp_altermessage 修改錯誤信息的狀態
sp_addly_job_to_targets 把作業應用到一個或者多個目標伺服器
sp_approlepassword 在當前資料庫中改變應用程序角色的口令
sp_aarticle_validation 為指定的文章初始化確認請求
sp_aarticlecolumn 指定在文章中使用的列
sp_aarticlefilter 創建一個用於水平過濾數據的過濾器
sp_articleview 當表被過濾時,為文章創建一個同步化對象
sp_attach_single_file_db 在當前伺服器中,附加一個只有一個數據文件的資料庫
sp_aautostats 對於一個指定的索引或統計,自動顯示update statistics的狀態
sp_bindefault 把默認值綁定到列或用戶定義的數據類型上
sp_bindrule 把規則綁定到列或用戶定義的數據類型上
sp_bindsession 綁定或解除綁定與實例中的其它事務的連接
sp_browsereplcmds 在分布資料庫中返回一種可讀格式的結果集
sp_catalogs 返回指定連接伺服器中的系統目錄列表,在本地伺服器中等價於資料庫列表
sp_certify_removable 確認在可移動介質上用於分布的資料庫是否正確配置
sp_change_agent_parameter 修改復制代理配置使用的參數
sp_change_agent_profile 修改復制代理配置使用的配置參數
sp_change_users_login 修改login與當前資料庫中用戶之間的關系
sp_changearticle 改變文章的屬性
sp_changedbowner 改變當前資料庫的所有者
sp_changedistpublisher 改變分布出版伺服器的屬性
sp_changedistributor_password 改變分布伺服器的口令
sp_changedistributor_property 改變分布伺服器的屬性
sp_changedistribtutiondb 改變分布資料庫的屬性
sp_changegroup 改變安全性帳戶所屬的角色
sp_changemergearticle 改變合並文章的屬性
sp_changemergefilter 改變一些合並過濾器的屬性
sp_changemergepublication 改變合並出版物的屬性
sp_changemergepullsubscription 改變合並拉回出版物的屬性
sp_changemergesubscription 改變合並的推出或者拉回出版物的屬性
sp_changeobjectowner 改變對象的所有者
sp_changepublication 改變出版物的屬性
sp_changesubscriber 改變用於訂閱伺服器的選項
sp_changesubscriber_schele 改變用於分布式代理和事務代理的訂閱伺服器的調度
sp_changesubstatus 改變訂閱伺服器的狀態
sp_column_privileges 返回列的許可權信息
sp_column_privileges_ex 返回在鏈接伺服器上指定表的列的許可權信息
sp_columns_ex 返回在鏈接伺服器上列的信息
sp_create_removable 創建一個可移動介質資料庫
sp_createstats 創建單列的統計信息
sp_cursor 用於請求定位更新
sp_cursor_list 報告當前打開的伺服器游標屬性
sp_cursorclose 關閉和釋放游標
sp_cursorfetch 從游標中取出數據行
sp_cursoropen 定義與游標和游標選項相關聯的 SQL 語句,然後填充游標
sp_cursoroption 用於設置各種游標選項
sp_cycle_errorlog 關閉錯誤日誌文件重新開始錯誤記錄
sp_datatype_info 返回當前環境支持的數據類型信息
sp_dbfixedrolepermission 顯示每一個固定資料庫角色的許可
sp_dboption 顯示或修改資料庫選項
sp_dbremove 刪除資料庫和與該資料庫相關的所有文件
sp_defaultdb 設置登錄帳戶的默認資料庫
sp_defaultlanguage 設置登錄帳戶的默認語言
sp_delete_alert 刪除警報
sp_delete_backuphistory 刪除備份和恢復的歷史信息
sp_delete_category 刪除指定類型的作業、警報和操作員
sp_delete_job 刪除一個作業
sp_delete_jobschele 刪除作業的調度
sp_delete_jobserver 刪除指定的目標伺服器
sp_delete_jobstep 從作業中刪除指定的作業步驟
sp_delete_notfication 刪除發送給某個操作員的所有通知
sp_delete_operator 刪除操作員
sp_delete_targetserver 從可以使用的目標伺服器列表中刪除指定的伺服器
sp_delete_targetservergroup 刪除指定的目標伺服器組
sp_delete_targetsvrgrp_member 從目標伺服器組中刪除一個目標伺服器
sp_deletemergeconflictrow 刪除沖突表中的記錄行
sp_denylogin 防止window用戶或群組連接到 sql server
sp_describe_cursor 報告伺服器游標的屬性
sp_describe_cursor_columns 報告在伺服器游標的結果集中列的屬性
sp_describe_cursor_tables 報告伺服器游標參考的基表信息
sp_detach_db 分享伺服器中的資料庫
sp_drop_agentparameger 刪除配置文件中的一個或者多個參數
sp_drop_profile 刪除配置文件
sp_dropalias 刪除一個帳戶的別名
sp_dropapprole 刪除當前資料庫中的應用程序角色
sp_droparticle 從出版物中刪除一篇文章
sp_dropdevice 刪除資料庫或者備份設備
sp_dropdistpublisher 刪除出版伺服器
sp_dropdistributiondb 刪除分布資料庫
sp_dropdistributor 刪除分布伺服器
sp_dropdropextendedproc 刪除一個擴展存儲過程
sp_dropgroup 從當前資料庫中刪除角色
sp_droplinkedsrvlogin 刪除一個本地伺服器和連接伺服器的映射帳戶
sp_droplogin 刪除一個登錄帳戶
sp_dropmergearticle 從合並出版物中刪除一篇文章
sp_dropmergefilter 刪除一個合並過濾器
sp_dropmergepublication 刪除一個合並出版物和與其相關的快照復制
sp_dropmergepullsubscription 刪除一個合並拉回訂購物
sp_dropmergesubscription 刪除一個訂閱物
sp_dropmessage 刪除一個消息
sp_droppublication 刪除出版物和與其相關的文章
sp_droppullsubscription 刪除當前訂閱伺服器資料庫中的訂閱物
sp_dropremotelogin 刪除一個遠程登錄帳戶
sp_droprole 從當前資料庫中刪除一個角色
sp_droprolemember 從當前資料庫中的一個角色中刪除一個安全性帳戶
sp_dropserver 刪除一個遠程或者連接伺服器列表中的伺服器
sp_dropsrvrolemember 從一個固定的伺服器角色中刪除一個帳戶
sp_dropsubscriber 刪除一個訂閱伺服器
sp_dropsubscription 刪除訂閱物
sp_droptype 刪除一種用戶定義的數據類型
sp_dropuser 從當前資料庫中刪除一個用戶
sp_dropdropwebtask 刪除以前版本定義的web任務
sp_dsninfo 從一個與當前伺服器相關的分布伺服器返回ODBC和OLE DB數據源的信息
sp_mpparamcmd 返回存儲在分布資料庫中的參數化命令的詳細信息
sp_enumcodepages 返回一個字元集和代碼頁的列表
sp_enumcustomresovers 返回所有可用的定製解決方案表表
sp_enumdsn 返回所有可用的odbc和ole db數據源列表
sp_enumfullsubscribers 返回訂閱伺服器的列表
sp_expired_subscription_cleanup 周期性地檢查訂閱物的狀態是否失效
sp_fkeys 返回當前環境的外鍵信息
sp_foreignkeys 返回參照連接伺服器的表的主鍵的外鍵
sp_fulltext_catalog 創建和刪除全文本目錄
sp_fulltext_column 指定某一個列是否參加全文本索引
sp_fulltext_database 從當前資料庫中初始化全文本索引
sp_fulltext_service 改變Microsoft Search Service屬性
sp_fulltext_table 標記用於全文本索引的表
sp_generatefilters 在外鍵表上創建一個過濾器
sp_get_distributor 確定一個分布伺服器是否安裝在某個伺服器上
sp_getbindtoken 創建一個綁定的連接文本
sp_getmergedeletype 返回合並刪除的類型
sp_grant_publication_access 在出版物的訪問列表中增加一個用戶
sp_grantdbaccess 在當前資料庫中增加一個安全性帳戶
sp_grantlogin 允許Windows用戶或群組連接到 SQL Server
sp_help_agent_default 檢索作為參數傳送的代理類型的默認配置的標識號
sp_help_agent_parameter 返回代理配置的所有參數
sp_help_agent_profile 返回指定代理的配置
sp_help_alert 報告有關警報的信息
sp_help_category 提供有關作業、警報、操作員的指定種類的信息
sp_help_downloadlist 列出有關作業的信息
sp_help_fulltext_catalogs 返回有關全文本索引表的信息
sp_help_fulltext_columns 返回標記全文本索引的列信息
sp_help_fulltext_columns_cursor 使用游標檢索標記為全文本的索引列
sp_help_fulltext_tables 返回標記為全文本索引的表
sp_help_fulltext_tables_cursor 使用游標返回標記為全文本索引的表
sp_help_job 返回有關作業的信息
sp_help_jobhistory 提供有關作業的歷史信息
sp_help_jobschele 返回作業的調度信息
sp_help_jobserver 返回給定作業的伺服器信息
sp_help_jobstep 返回作業的步驟信息
sp_help_operator 返回有關操作員的信息
sp_help_publication_access 返回可以訪問指定出版物的帳戶列表
sp_help_targetserver 列出全部目標伺服器
sp_help_targetservergroup 列出指定伺服器組中的全部目標伺服器
sp_helparticle 顯示有關文章的信息
sp_helpconstraint 返回有關約束的類型、名稱等信息
sp_helpdbfixedrole 返回固定的伺服器角色的列表
sp_helpdevice 返回有關資料庫文件的信息
sp_helpdistpublisher 返回充當分布伺服器的出版伺服器的屬性
sp_helpdistributiondb 返回分布資料庫的屬性信息
sp_helpdistributor 列出分布伺服器、分布資料庫、工作目錄等信息
sp_helpextendproc 顯示當前定義的擴展存儲過程信息
sp_helpfile 返回與當前資料庫相關的物理文件信息
sp_helpfilegroup 返回與當前資料庫相關的文件組信息
sp_helpgroup 返回當前資料庫中的角色信息
sp_helpindex 返回有關表的索引信息
sp_helplanguage 返回有關語言的信息
sp_helplinkedsrvlogin 返回鏈接伺服器中映射的帳戶信息
sp_helplogins 返回有關login和與其相關的資料庫用戶信息
sp_helpmergearticle 返回有關合並文章的信息
sp_helpmergearticleconflicts 返回有關沖突的出版物中的文章信息
sp_helpmergeconflictrows 返回在指定沖突表中的行
sp_helpmergefilter 返回有關合並過濾器的信息
sp_helpmergepublication 返回有關合並出版物的信息
sp_helpmergepullsubscription 返回有關拉回訂閱物的信息
sp_helpmergesubscription 返回有關推出訂閱物的信息
sp_help_notification 報告對於給定操作員的警報信息
sp_helppublication 返回有關出版物的信息
sp_helprole 返回當前資料庫中的角色信息
sp_helprolemember 返回當前資料庫中角色成員的信息
sp_helprotect 返回有關用戶許可的信息
sp_helpserver 顯示特定遠程或者復制伺服器的信息
sp_helpsort 顯示系統的排列順序和字元集的信息
sp_helpsrvrole 顯示系統中的固定伺服器角色列表
sp_helpsrvrolemember 顯示系統中的固定伺服器角色成員的信息
sp_helpsubscrberinfo 顯示有關訂閱伺服器的信息
sp_helpsubscription 顯示有特定出版物等有關的訂閱物信息
sp_helpsubscription_properties 檢索安全性信息
sp_helptrigger 顯示觸發器的類型
sp_helpuser 顯示當前資料庫中的用戶、Windows NT用戶和組、角色等信息
sp_indexoption 為用戶定義的索引設置選項
sp_link_publication 設置立即修改訂閱伺服器的同步化觸發器使用的配置和安全性信息
sp_linkedservers 返回在本地伺服器上定義的鏈接伺服器的列表
sp_makewebtask 創建一個執行html文檔的任務
sp_manage_jobs_by_login 刪除或者重新指定屬於login的作業
sp_mergemmyupdate 製作用於合並復制的修改備份
sp_mergesubscription_cleanup 刪除元數據
sp_monitor 顯示系統的統計信息
sp_msx_defect 從多個伺服器操作中刪除當前伺服器
sp_msx_enlist 增加當前伺服器到可用的目標伺服器列表中
sp_pkeys 返回某個表的主鍵信息
sp_post_msx_operation 插入一些目標伺服器可以執行的信息
sp_primarykeys 返回主鍵列的信息
sp_processmail 使用擴展存儲過程修改郵件信息
sp_procoption 設置或者顯示過程選項
sp_publication_validation 初始化文章校驗請求
sp_purge_jobhistory 刪除作業的歷史記錄
sp_recompile 使存儲過程和觸發器在下一次運行時重新編譯
sp_refreshsubscriptions 在拉回出版物中增加訂閱物到文章中
sp_refreshview 刷新指定視圖的元數據
sp_reinitmergepullsubscription 標記一個合並拉回訂閱
sp_reiniteergesubscription 標記一個合並訂閱
sp_reinitpullsubscription 標記一個事務訂閱或者匿名訂閱
sp_reinitsubscription 重新初始化訂閱
sp_remoteoption 顯示或者修改遠程登錄帳戶的選項
sp_remove_job_from_targets 從給定的目標伺服器中刪除指定的作業
sp_removedbreplication 從資料庫中刪除所有的復制對象
sp_replcounters 返回復制的統計信息
sp_repldone 修改伺服器做的分布事務的統計信息
sp_replflush 處理文章的高速緩沖存儲區
sp_replication_agent_checkup 檢查每一個分布資料庫
sp_replicationdboption 在當前資料庫中設置復制資料庫的選項
sp_replsetoriginator 用於在事務復制中檢測循環登錄
sp_replshowcmds 返回標記復制的事務命令
sp_repltrans 返回在出版資料庫事務日誌中的所有事務的結果集
sp_resetstatus 重新設置異常資料庫的形態
sp_resync_targetserver 重新同步所有的多伺服器作業
sp_revoke_publication_access 從出版資料庫的訪問列表中刪除login帳戶
sp_revokedbaccess 從當前資料庫中刪除安全性帳戶
sp_revokelogin 刪除系統的login帳戶
sp_script_synctran_commands 生成一個可以用於立即修改訂閱物的腳本
*/
6、深圳面試題:php,在淘寶購物時,淘寶伺服器突然停電檔機,你如何面對此類緊急事件設計你的購物車程序?
最後一個問題 我的看法
用「事務」處理 那一段代碼 要麼全部做完 沒有做完的 中途停止的 退回的代碼的開始 等待下次調用
7、性能測試面試題,求正確答案
1.什麼是負載測試?什麼是性能測試?
負載測試是一種性能測試指數據在超負荷環境中運行,程序是否能夠承擔 在這種測試中,將使測試對象承擔不同的工作量,以評測和評估測試對象在不同工作量條件下的性能行為,以及持續正常運行的能力。負載測試的目標是確定並確保系統在超出最大預期工作量的情況下仍能正常運行。此外,負載測試還要評估性能特徵,例如,響應時間、事務處理速率和其他與時間相關的方面。
性能測試主要使用場景測試軟體系統的性能是否滿足生產性能的要求,包括負載測試,強度測試,資料庫容量測試,基準測試以及競爭(並發,用戶)測試2.性能測試包含了哪些測試(至少舉出3種) 包括負載測試,強度測試,資料庫容量測試,基準測試以及競爭測試
3.簡述性能測試的步驟 第一步:需求分析、計劃測試,設計測試用例 第二步:測試設計和開發(測試腳本錄制及調試,測試場景設計) 第三步:測試執行(測試環境搭建,場景部署,場景執行,監視場景) 第四步:測試結果分析,性能問題定位,測試報告評估
4.簡述使用Loadrunner的步驟 制定性能測試計劃-》使用Vuser錄制調試腳本VuGen-》用Loadrunner Controller設置場景-》運行場景-》監視場景by Loadrunner online runtime等-》分析測試結果
5.什麼時候可以開始執行性能測試? 功能測試通過;一般需要進行性能測試的系統,都是用戶量比較大、業務使用比較頻繁、比較重要的功能模塊。 6.LoadRunner由哪些部件組成? Virtual User Generator-生成用於「Controlier」部署的Vusers LoadRunner Controlier-產生壓力和搜集測試結果數據 LoadRunner Analysis-通過圖表分析工具來編譯和顯示測試結果
7.你使用LoadRunner的哪個部件來錄制腳本? 使用Virtual User Generator錄制測試腳本
8.LoadRunner的哪個部件可以模擬多用戶並發下回放腳本? LoadRunner的Controller組件。
9.什麼是集合點?設置集合點有什麼意義?Loadrunner中設置集合點的函數是哪個? 在性能測試過程中,需要模擬大量用戶在同一時刻,訪問系統並同時操作某一任務,可以通過配置集合點來實現,多個用戶同時進行某操作; 集合點可以在伺服器上創建密集的用戶負載,使LoadRunner能夠測試伺服器在負載狀態下的性能。 設置集合點函數:lr_rendezvous("Meeting"); // Meeting是集合點名稱
10.什麼是場景?場景的重要性有哪些?如何設置場景? 場景用於模擬用戶實際業務操作; LoadRunner中場景有手工場景和面向目標的場景。 設置場景:選擇場景類型、設置運行時設置、模擬用戶數、加減壓方式、持續時間,配置負載生成器。
11.請解釋一下如何錄制web腳本? 利用Virtual User Generator錄制測試腳本,錄制步驟:
1、選擇合適的協議-Web(Http/Html),
2、設置錄制選項(HTML-based Script/URL-based Script)
3、開始錄制
12.為什麼要創建參數?如何創建參數?
A12:LoadRunner在錄制腳本的時候,只是忠實的記錄了所有從客戶端發送到伺服器的數據,而在進行性能測試的時候,為了更接近真實的模擬現實應用,對於某些信息需要每次提交不同的數據,或者使用多個不同的值進行循環輸入。這時,在LoadRunner中就可以進行參數化設置,以使用多個不同的值提交應用請求。 【參數化】:使用指定數據源中的值來替換腳本錄制生成的語句中的參數。 【參數化好處】 ● 減少腳本的大小 ● 提供使用不同的值執行腳本的能力,更加真實的模擬現實應用。 【參數化步驟】 ● 用參數替換Vuser腳本中的常量值 ● 為參數設置屬性和數據源 13.什麼是關聯?請解釋一下自動關聯和手動關聯的不同。
A13:【關聯的定義】簡單的說:就是把腳本中某些寫死(固定)的數據,轉變成動態的數據,或者說將前面語句的結果數據保存下來,然後在後面的語句提交請求時使用這些數據。 【需要關聯的前提條件】: 客戶端需要從伺服器端返回數據中獲取部分數據,並將這些部分數據處理後作為自己下一次請求的一部分發出。 【自動關聯與手工關聯的不同】:自動關聯是在腳本錄制過程中,VuGen會根據已經制定好的規則,自動找出需要關聯的值或腳本錄制完成後,執行腳本一次,通過Correlation Studio自動找出需要關聯的數據,並建立關聯;而手動關聯是需要錄制兩份相同業務流程的腳本,輸入的數據要相同,利用WinDiff工具,找出兩份腳本之間不同之處,也就是需要關聯的數據,再通過web_reg_save_param函數手動建立關聯,將腳本中用到關聯的數據參數化。
14.你如何找出哪裡需要關聯?請給一些你所在項目的實例。
A14: 1、錄制兩份相同業務流程的腳本,輸入的數據要相同
2、利用WinDiff工具,找出兩份腳本之間不同之處,也就是需要關聯的數據
3、通過web_reg_save_param函數手動建立關聯,將腳本中用到關聯的數據參數化。 通過錄制兩份腳本,進行對比,可知jsessionid、sap-ext-sid、sap-wd-cltwndid、sap-wd-tstamp需要進行關聯。
15.你在哪裡設置自動關聯選項? 錄制選項中進行設置
16.哪個函數是用來截取虛擬用戶腳本中的動態值?(手工管聯)
A16:Web_reg_save_param函數主要根據需要做關聯的動態數據前面和後面的固定字元串來識別、提取動態數據,所以在做關聯時,需要找出動態數據的左、右邊界字元串。
1.函數原型: int web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);
2.參數說明: ParamNam:存放動態數據的參數名稱 List of Attributes:其它屬性,包含Notfound、LB、RB、RelFrameID、Search、ORD、SaveOffset、Convert、SaveLen。
17.你在VUGen中何時選擇關閉日誌?何時選擇標准和擴展日誌? 在腳本運行調試成功後應關閉日誌。創建發送函數和消息日誌時用標准日誌,創建警告和其他信息是用擴展日誌。
18.你如何調試LoadRunner腳本? 在VuGen設置斷點breakpoints,然後使用單步跟蹤Run Step by Step,輸出調試日誌
19你在LR中如何編寫自定義函數?請給出一些你在以前進行的項目中編寫的函數。 Give me few functions you wrote in your previous project? - Before we create the User Defined functions we need to create the external library (DLL) with the function. We add this library to VuGen bin directory. Once the library is added then we assign user defined function as a parameter. The function should have the following format: __declspec (dllexport) char* <function name>(char*, char*) lr_load_dll("user32.dll"); Examples of user defined functions are as follows:GetVersion, GetCurrentTime, GetPltform are some of the user defined functions used in my earlier project.
20.在運行設置下你能更改那些設置? pacing: 每個虛擬用戶腳本包括三個部分:vuser_init, Run (Actions), vuser_end. 當你運行腳本的時候你能通知,虛擬用戶重復執行run部分,每一個重復做為一個iteration. 注意: vuser_init 和vuser_end 部分是不被重復的。Think Time Settings: 虛擬用戶think time仿效一個真實用戶在活動中等待的時間,例如:當一個用戶從伺服器接受數據的時候,在響應前這個用戶需要等待數秒來接受數據,這個被耽擱的時間就是think time。 Error Handling:你能指定一個虛擬用戶在腳本執行期間如何處理錯誤,默認的,當一個虛擬用戶發現一個錯誤的時候,它會隨著下一次重復繼續下去,你能使用這個設置來通知虛擬用戶當發生錯誤的時候是否繼續執行腳本。 Run Logic:迭代次數
21.你在不同的環境下如何設置迭代? A21:在「Run Time Settings」中設置
22.你如何在負載測試模式下執行功能測試? A22:在負載測試模式下,可以通過同時運行數個虛擬用戶,通過增加虛擬用戶數,確定伺服器在多大的負載量下,仍然可以正常運行,我一般進行核心功能操作,驗證核心功能運行是否正常。
23.什麼是逐步遞增?你如何來設置? A23:虛擬用戶數隨著負載時間逐漸增加,可以幫助確定系統響應時間減慢的准確時間點。 可以在「加壓」選項卡中進行設置:如下圖所示,將設置更改為:「每 30 秒啟動 2 個 Vuser」
24.以線程方式運行的虛擬用戶有哪些優點?
A24:以線程方式運行的虛擬用戶,在默認情況下,Controller為每50個用戶僅啟動一個mmdrv進程,而每個用戶都按線程方式來運行,這些線程用戶將共享父進程的內存,這就節省了大量內存空間,從而可以在一個負載生成器上運行更多的用戶。
25.當你需要在出錯時停止執行腳本,你怎麼做? 取消運行設置中的「Continue on error」復選框。 或者使用lr_abort函數。
26.響應時間和吞吐量之間的關系是什麼? A26:當系統吞吐量未達到系統處理極限時,系統性能不會衰減,交易平均響應時間一般也不會遞增,當系統達到吞吐量極限時,客戶端交易會在請求隊列中排隊等待,等待的時間會記錄在響應時間中,故交易平均響應時間一般會遞增。
27.說明一下如何在LR中配置系統計數器? A27:以windows資源監控為例,可右鍵點「添加度量」,輸入系統IP、選擇平台類型,確定即可,詳細參加LR自帶操作手冊^_^。 對於監控不同類型的操作系統,需要做一些准備工作,可參見監控操作系統資源部分。
28.你如何識別性能瓶頸? A28:性能瓶頸分為:硬體瓶頸和軟體瓶頸性能瓶頸可以通過監控器來分析發現,這些監控器包括應用伺服器監控、web伺服器監控、資料庫伺服器監控器和網路監控器;它們可以幫助分析導致響應時間增加的原因;性能度量一般包括響應時間、吞吐量、每秒點擊率、網路延遲等等。
29.如果web伺服器、資料庫以及網路都正常,問題會出在哪裡?
A29:問題可能出在系統本身或應用伺服器、或為應用編寫的代碼編寫中。
30.如何發現web伺服器的相關問題?
A30:可以利用web資源監控器發現web伺服器相關問題,在場景執行過程中,可以利用監控器分析web伺服器吞吐量、每秒點擊率、每秒HTTP響應數、每秒頁面下載數,以及web伺服器硬體資源使用情況等。
31.如何發現資料庫的相關問題?
A31:可以通過資料庫監控器和數據資源圖發現資料庫相關的問題,例如在運行Controller之前,可以指定需要度量的資源,之後可以根據監控的數據,分析資料庫相關的問題
32.解釋所有web錄制配置?
A32:選擇錄制協議、設置錄制選項、選擇瀏覽器、選擇存放路徑、開始錄制。
33.解釋一下覆蓋圖和關聯圖的區別?
A33:覆蓋圖:合並兩個圖的內容,使用同一個X軸,合並圖左Y軸顯示當前圖的值,合並圖右Y軸顯示被合並圖的值。 關聯圖:當前活動圖的Y軸變為合並圖的X軸,被合並圖的Y軸變成合並圖的Y軸。
34.你如何設計負載?標準是什麼?
A34:負載測試計劃多少用戶數量、使用什麼類型的機器、以及在什麼環境下進行。主要基於兩個重要的文檔,任務分布圖和事務信息,任務分布圖告訴我們在負載時間段內,某一個事務使用的用戶數,高峰使用率及低峰使用率均來自該文檔; 事務信息告訴我們事務名及優先順序,在設計場景時可以參考。
35.Vuser_init中包括什麼內容?
A35:Vuser_init中包含在腳本執行過程中只需執行一次的腳本。一般來說,所有需要初始化的都可以放在vuser_init裡面,比如登錄。
36. Vuser_end中包括什麼內容?
A36:vuser_end中一般包含退出的過程,比如退出系統,主要在腳本執行完成或停止時運行,在設置了迭代次數時,vuser_end和vuser_int均只執行一次。
37.什麼是think time?think_time有什麼用?
A37:思考時間:用戶在各步驟之間停下來進行思考的時間,由於用戶基於其經驗水平和目標而與應用程序進行交互操作,因此技術水平更高的用戶工作起來可能會比新用戶要快。 通過啟用思考時間,可以使 Vuser在負載測試期間更准確地模擬其對應的真實世界用戶。
38.標准日誌和擴展日誌的區別是什麼?
A38:標准日誌:腳本執行過程中,將函數集及信息發送到日誌文件中 擴展日誌:可以將詳細的腳本執行信息輸出到日誌文件中,可以選擇以下三種擴展日誌信息: ● 參數替換:腳本運行過程中,可以將參數及當前參數值輸出到日誌文件中 ● 伺服器返回的數據:將伺服器返回給客戶端的數據輸出到日誌文件中 ● 高級跟蹤:所有的虛擬用戶信息和函數調用輸出到日誌文件中
39.解釋以下函數及他們的不同之處。
A39:lr_debug_message:發送調試信息到輸出窗口或業務監控日誌文件中 lr_output_message:發送日誌信息到輸出窗口或業務監控日誌文件中 lr_error_message:發送錯誤信息到輸出窗口或業務監控日誌文件中 lrd_stmt:賦予一個SQL語句用於處理 lrd_fetch:獲取結果集中的下一行數據
40.什麼是吞吐量?
A40:客戶端每秒從伺服器接收到的數據,或系統伺服器每秒能處理通過的交易數。一般隨著虛擬用戶數的增加,吞吐量也增加,說明網路帶寬比較充足,反之,吐過隨著虛擬用戶數的增加,吞吐量比較平穩,呈直線狀態,則說明網路帶寬成為瓶頸,限制了數據傳輸。
41.場景設置有哪幾種方法?
A41:面向目標的場景設置和手動場景
8、面試題:oracle資料庫優化
oracle資料庫優化的話主要有以下幾個方面(我接觸過的,可能不全面):
1 查詢語句的優化,內這個主要是容根據語句和資料庫索引的情況,結合查詢計劃的分析結果,對性能較低的查詢語句進行重寫,在執行查詢前執行表分析語句也可以算這里;
2 數據結構優化,這個包括根據實際的應用中業務邏輯,對資料庫的結構進行重新設計,或者創建相關索引里提高查詢效率;
3 資料庫設置優化,這方面主要是調整資料庫和數據結構的相關參數提高應用訪問系統的效率;
4 存儲結構優化,在數據量較大的情況下,可以考慮通過資料庫的存儲結構進行優化,比如對數據進行partition,將數據存儲在磁碟陣列伺服器上等。
我的經驗有限,以上是部分建議
9、JAVA常見面試題之Forward和Redirect的區別
1.從地址欄顯示來說
forward是伺服器請求資源,伺服器直接訪問目標地址的URL,把那個URL的響應內容讀取過來,然後把這些內容再發給瀏覽器.瀏覽器根本不知道伺服器發送的內容從哪裡來的,所以它的地址欄還是原來的地址.
redirect是服務端根據邏輯,發送一個狀態碼,告訴瀏覽器重新去請求那個地址.所以地址欄顯示的是新的URL.所redirect等於客戶端向伺服器端發出兩次request,同時也接受兩次response。
2.從數據共享來說
forward:轉發頁面和轉發到的頁面可以共享request裡面的數據.
redirect:不能共享數據.
redirect不僅可以重定向到當前應用程序的其他資源,還可以重定向到同一個站點上的其他應用程序中的資源,甚至是使用絕對URL重定向到其他站點的資源.
forward,方法只能在同一個Web應用程序內的資源之間轉發請求.
forward 是伺服器內部的一種操作.
redirect 是伺服器通知客戶端,讓客戶端重新發起請求.
所以,你可以說 redirect 是一種間接的請求, 但是你不能說"一個請求是屬於forward還是redirect "
3.從運用地方來說
forward:一般用於用戶登陸的時候,根據角色轉發到相應的模塊.
redirect:一般用於用戶注銷登陸時返回主頁面和跳轉到其它的網站等.
4.從效率來說
forward:高.
redirect:低.
總結:
A.Redirect等於客戶端向伺服器發出兩次request,同時也接受到兩次response
Forward卻只是一次request一次response
相比之下,Forward性能更高。
B.Forward能夠存儲request Scope的Attribute而Redirect卻不行。
C.Forward的同時URL並不會變。
D.Forward需要在Servlet中需要通過一個Dispatcher來實現。
E.Redirect能夠防止某些情況下客戶端Refresh造成的一些未知後果(例如連續刪除)