明源面試,筆試題目如下
一、SQL測試題
1 有兩張表
根據給出的SQL語句,寫出返回的行數分別是多少?為了形象直觀的顯示,我給出了sql語句執行結果。
A 學生表 B分數表
新題目
select a.* from a inner join b on a.id=b.id;
select a.* from a,b where a.id=b.id
select a.* from a left join b on a.id=b.id;
select a.* from a right join b on a.id=b.id;
select a.* from a right join b on a.id=b.id and a.id<7;
select a.* from a right join b on a.id=b.id where a.id<7
老題目
select b.* from a left join b on a.id=b.id;
select b.* from a left join b on a.id=b.id;
select b.* from a right join b on a.id=b.id;
以上語句返回的行數分別是多少?
答案:見圖就知道了
(1)刪除age為18-30的成績
delete from b where b.id in
(select id from a
where age between 18 and 35)
(2)統計每門功課前兩名學生的ID,name ,subject ,score ?(很經典的,花了我很長時間)
select b1.subject,b1.score,a.* from b b1 left join a on a.id = b1.id
where b1.id in(
select id from b where score in
(select distinct top 2 score from b where subject =b1.subject order by score desc))
order by b1.subject,b1.score desc
(3)實現如下格式
這是一個行轉列
select b.ID ID,
sum(case when b.Subject='語文' then score end)語文,
sum(case when b.Subject='數學' then score end)數學
from b group by b.id
註:打底線的是要填的內容
(4)建立一個視圖查詢 ID,name,age,subject ,score ,如果一個學生對應有多個記錄 則全部顯示出來?
if exists (select * from sysobjects where name='get_score')
drop view get_score;
create view get_score
as
select a.id,a.name,b.subject,b.score from a left join b on a.id=b.id;
(5)建立一個預存程序 , 實現輸入學生ID(預存程序的輸入參數) , 顯示學生姓名以及平均分,格式如下:李4:45
create procedure get_avgScore(@id int)
as
declare @name varchar(50)
declare @avg float
begin
select @name=a.name+':',@avg=avg(score) from a left join b on a.id =b.id
where a.id=@id group by (a.name+':')
print(@name+cast(@avg as varchar(4)))
end;
exec get_avgScore 4
二、asp.net測試題
(1)請列舉有哪幾種頁面重新導向的方法 ,並解釋(至少兩種以上)
(2)ASP.NET頁面傳值的集中方法,並分析其利弊(至少兩種以上)
(3)說說URL傳值應注意的問題(至少兩點以上)
1.URL傳值
這是經典的傳值方式, 如XXX.aspx?id=1&name=c; 不過所傳遞的值是會顯示在瀏覽器的地址欄上的,而且不能傳遞對象。所以這種方法一般用於傳遞的值少且安全性要求不高的情況下。
2.Session傳值
這種方法將每份資料存放區於伺服器變數中,可以傳遞比較多的資料,並且安全性較高,所以常用於使用者身份的驗證功能中。不過,Session變數如果儲存過多的資料會消耗過多的伺服器資源,編程者在使用時應該謹慎。Session可在應用程式的多個頁面中以成對的名稱和數值的方式共用,直到瀏覽使用者關閉自己的瀏覽器或者伺服器Session逾時(可設定,預設為20分鐘)停止。
Session具有以下特點:
Session中的資料儲存在伺服器端;
Session中可以儲存任意類型的資料;
Session預設的生命週期是20分鐘,可以手動設定更長或更短的時間。
3.Cookie傳值
Cookie是一種比較特殊的資料存放區方式,因為這種方式將資料存放區於瀏覽使用者的電腦中,以文字檔的形式存在於磁碟中。這種方式非常有意思,很多登入系統就是利用Cookie實現使用者自動登入。即使用者登入一次的登入資訊將被寫入到使用者電腦的Cookie檔案中,下次登入時,網站自動讀取該Cookie完成身分識別驗證。通過Cookie傳遞資料雖然很方便,儲存時間可以自由設定,但是安全性不高,編程者不應過於依賴Cookie,而應採用結合的方式完成敏感性資料的儲存。
Cookie儲存資料有以下特點:
Cookie中的資料儲存在用戶端;
Cookie中只能儲存字串類型的資料,如果需要在Cookie中儲存其它類型資料,需要將其轉換成字串類型後儲存;
Cookie也有其預設生命週期,也可以手動設定,最大可設定成50年之後到期。
4.Server.Transfer傳值
這個方法的步驟相對較多,使用該方法可以在另一個頁面以公開對象屬性的方式來存取值,使用這種方法是物件導向的。該方法的代碼編寫並不複雜,首先通過定義一個public許可權的屬性,該屬性可返回所需傳遞的值。然後在第二個頁面中,使用Context.Handler屬性來獲得前一個頁面執行個體對象的引用,即可通過訪問自訂的屬性擷取需要的值。
5.Application傳值
嚴格地說應該是通過HttpApplication對象在伺服器端產生一個狀態變數來儲存所需的資訊,該HttpApplication物件變數的可用範圍覆蓋整個WEB應用程式。所以該對象一般儲存一些要公布的資訊,如線上人數等,而對於那些涉及使用者個人的敏感性資料則不用這種方法儲存。HttpApplication對象有兩個常用的方法,即Lock和UnLock方法,可用於處理多個使用者對儲存在Application變數中的資料進行寫入的問題。Lock方法鎖定全部的Application變數,從而阻止其他使用者修改Application對象的變數值,UnLock方法則解除對HttpApplication物件變數的鎖定。通過HttpApplication對象傳值的方法和Session比較相似,但是Session是對於每個單獨的使用者,當該使用者關閉瀏覽器,則Session失效。HttpApplicationObject Storage Service的變數是針對所有訪問程式的使用者,即使有使用者關閉了瀏覽器,變數的值不會丟失。
6.跨頁面傳送
跨頁面傳送和調用HttpServerUtility對象的Transfer方法有相似之處,不過效率更高。因為調用HttpServerUtility對象的Transfer方法是基於伺服器的方法,而跨頁面傳送是基於瀏覽器端的。這個方法主要是設定控制項的“PostBackUrl”屬性,使該控制項(如Button)操作後轉向指定頁面,並且這個指定頁面可以直接擷取前一個頁面的所有控制項對象及其屬性值。
7.如果有特殊需要,還可以使用其他方法,例如通過資料庫儲存臨時資料等。
(4) 用代碼實現: 建立一個XML文檔 將字串 "<item>NBA</item>" 讀到文檔裡
public void addxml()
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<item>NBA</item>");
doc.Save("doc.xml");
}
(5)解釋一下裝箱和拆箱,並附上代碼說明
public void show()
{
int val = 100;
object obj = val;
Response.Write("對象的值:" + obj+"<br/>");
//這是一個裝箱的過程,是將實值型別轉換為參考型別的過程
int vals = 100;
object objs = val;
int num = (int)objs;
Response.Write("num:" + num);
//這是一個拆箱的過程,是將實值型別轉換為參考型別,再由參考型別轉換為實值型別的過程
}
(6) 1.寫出結果
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B : A
{
public B()
{
Console.WriteLine('B');
}
public newvoid Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
結果:A,B,A.Fun();
3 情景A
房地產樓盤有很多種項目,每個項目有不同類型的房子,像普通商品房 是按照面積*均價 來計算價格,而別墅是按照數量來計算價格
情景B
公司老總和銷售總監希望希望立刻得知樓盤的銷售情況
(1)請使用UML 來描述A 中各對象的關係
(2)請給A中的各對象建表 ,表名和欄位 自己定
(3)請結合B的情境,用一種設計模式來實現(編碼實現)
4 手寫代碼實現如下table樣式
答:代碼如下:
<table style="background-color:#ffffff" border="1px">
<tr>
<td rowspan="2" width="120px" height="25px">1</td>
<td width="120px" class="style1">2</td>
<td width="120px" class="style1">3</td>
</tr>
<tr>
<td colspan="2" rowspan="2">5</td>
</tr>
<tr>
<td width="120px" height="25px">4</td>
</tr>
</table>
5.Javascript測試題
(1) (a+2)-1= NAN
(2)ParseInt("7")+3=10
(3)
var a="8" ;
var b=5;
var c=a+b;
var d=a-b;
c=85 (拼接字串)
d=3 (數字相減)
(4)
請擴充JS中Array的功能 讓其也能實作類別似於C#中ArrayList的功能
如: Array arr=new Array(); arr.Add("arrvalue");
(5)請列舉你所用過或自己編寫的Javascript庫, 就其中所涉及的思想或者寫的比較好的地方談談你的看法
6. HTML 頁面上有一個DIV ID 為 showInfo,, 有一個Button<input type="button" value="顯示" name="btnOK">現要求實現點擊按鈕 在DIV裡 顯示一個超連結 <a href=www.mysoft.com.cn>明源軟體</a>,自己寫一個JS函數實現
答:代碼如下:
function Showlink()
{
document.getElementById("showlink").innerHTML = "<a href=www.mysoft.com.cn>明源科技</a>";
}
<div id="showlink">
<input id="btnok" type="button" value="show" name="btnOk" onclick="Showlink();"/>
6 邏輯題
計劃用水量為 wplan,使用者實際用水量為wsj,如果實際用水量小於wplan,按照price1收費,實際用水量超過wplan,並且小於1.2wplan
超過部分按照price2收費,實際用水量大於1.2wplan,超過部分按照price3收費,請用一個函數iff(exp1,exp2,exp3) 來計算使用者的水費,要求 如果exp1為true ,返回exp2,否則返回exp3,函數可以嵌套