java面試題3
九、C++部分:(共14題:基礎10道,中等1道,較難3道)
188、以下三條輸出語句分別輸出什麼?【基礎】
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << (str1==str2) << endl; //輸出什麼?
cout << boolalpha << (str3==str4) << endl; //輸出什麼?
cout << boolalpha << (str5==str6) << endl; //輸出什麼?
答:輸出為:false、false、true。
189、以下反向遍歷array陣列的方法有什麼錯誤?【基礎】
vectorarray;
array.push_back(1);
array.push_back(2);
array.push_back(3);
//反向遍歷array陣列:
for(vector::size_type i=array.size()-1; i>=0; --i){
cout << array[i] << endl;
}
答:for迴圈中的變數i的型別不應定義為vector::size_type,
因為該型別為無符號數值型別,故迴圈條件將恆成立,為死迴圈,應將其型別定義為有符號的int型別。
190、以下程式碼有什麼問題?【基礎】
cout << (true ? 1 : "1") << endl;
答:運算子中兩個可選值的型別不同。
191、以下程式碼有什麼問題?【基礎】
typedef vectorIntArray;
IntArray array;
array.push_back(1);
array.push_back(2);
array.push_back(2);
array.push_back(3);
//刪除array陣列中所有的2
for(IntArray::iterator itor=array.begin(); itor!=array.end();
++itor){
if(2==*itor) {
array.erase(itor);
}
}
答:for迴圈中的if語句後的array.erase(itor)語句,它將迭代器itor所指向的元素刪除後會自動下移一位,故應在其後加上語句:itor--;
192、以下程式碼中的兩個sizeof用法有問題嗎?【基礎】
void upperCase(char str[]){ //將str中的小寫字母轉換成大寫字母
for(int i=0; i
if(a<=str[i] && str[i]<=z)
str[i] -= (a-A);
}
}
int main(){
char str[] = "aBcDe";
cout << "str 字串長度為:" << sizeof(str)/sizeof(str[0]);
cout << endl;
upperCase(str);
cout << str << endl;
return 0;
}
答:在upperCase方法中,for迴圈的sizeof(str)的'值將總是4,所以該方法只能將引數中的字串的前四個字元轉換成大寫字母。
193、以下程式碼能夠編譯透過嗎?為什麼?【基礎】
unsigned int const size1 = 2;
char str1[size1];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[size2];
答:能;
194、以下程式碼有什麼問題?【基礎】
struct Test{
Test(int){}
Test(){}
void fun(){}
};
void main(void){
Test a(1);
a.fun();
Test b();
b.fun();
}
答:main函式的返回型別應為int;不能對b呼叫fun()方法。
195、以下程式碼中的輸出語句輸出0嗎?為什麼?【基礎】
struct CLS{
int m_i;
CLS(int i):m_i(i){ }
CLS(){ CLS(0);}
};
int main(){
CLS obj;
cout <
}
答:輸出不是0;
196、C++中的空類,預設產生哪些類成員函式?【基礎】
答:空類中預設包含的成員函式如下:
class Empty{
public:
Empty(); //預設建構函式
Empty( const Empty& ); //複製建構函式
~Empty(); //解構函式
Empty& operator=( const Empty& ); //賦值運算子
Empty* operator&(); //取址運算子
const Empty* operator&() const; //取址運算子const
};
197、統計一篇文章中單詞個數。【基礎】
答:程式碼如下:
include
#include
using namespace std;
int main(){
ifstream fin("t.txt");
if(!fin){
cout<<"can open file"<
return -1;
}
int count = 0;
char buf[256];
memset(buf, 0, 256);
while(1){
fin2>>buf;
if(fin2.eof())
break;
count++;
}
cout<<"The number of the words is : "<
fin2.close();
return 0;
}
198、寫一個函式,完成記憶體之間的複製。【中等難度】
答:程式碼如下:
void* mymemcpy(void* dest, const void* src, size_t count){
char* pdest = static_cast(dest);
const char* psrc = static_cast(src);
if(pdest>psrc && pdest
for(size_t i=count-1; i!=-1; --i){
pdest[i] = psrc[i];
}
}else{
for(size_t i=0; i
pdest[i] = psrc[i];
}
}
return dest;
}
int main(){
char str[] = "0123456789";
mymemcpy(str+1, str+0, 9);
cout << str << endl; //將輸出"0012345678"
return 0;
}
199、非C++內建型別A和B,在哪幾種情況下B能隱式轉化為A?【較難】
答:a)class B : public A{……}//B公有繼承自A,可以是間接繼承的
b)class B{operator A();}//B實現了隱式轉化為A的轉化
c)class A{ A(const B&);}//A實現了non-explicit的引數為B建構函式
(可以有其他帶帶預設值的引數)
d)A& operator= (const A&);//賦值操作,雖不是正宗的隱式型別轉換,
但也可以勉強算一個
200、以下程式碼有什麼問題?【較難】
void char2Hex(char c){ //將字元以16進位制顯示
char ch = c/0x10 + ;
if(ch>9) ch += (A-9-1);
char cl = c%0x10 + ;
if(cl>9) cl += (A-9-1);
cout << ch << cl << ;
}
int main(){
char str[] = "I love 中國";
for(size_t i=0; i
char2Hex(str[i]);
cout << endl;
return 0;
}
答:
201、以下兩條輸出語句分別輸出什麼?【較難】
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ((int)a==(int&)a) << endl; //輸出什麼
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ((int)b==(int&)b) << endl;//輸出什麼
答:第一處輸出false,第二處輸出true。
十、WebLogic及其它:(共13題:附加部分,超出授課範圍)
202、如何給weblogic指定大小的記憶體?
答:在啟動Weblogic的指令碼中(位於所在Domian對應伺服器目錄下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以調整最小記憶體為32M,最大200M。
203、如何設定的weblogic的熱啟動模式(開發模式)與產品釋出模式?
答:可以在管理控制檯中修改對應伺服器的啟動模式為開發或產品模式之一,或者修改服務的啟動檔案或者commenv檔案,增加set pRODUCTION_MODE=true。
204、如何啟動時不需輸入使用者名稱與密碼?
答:修改服務啟動檔案,增加 WLS_USER和WLS_pW項;也可以在boot.properties檔案中增加加密過的使用者名稱和密碼。
205、在weblogic管理控制檯中對一個應用域(或者說是一個網站,Domain)進行jms及ejb或連線池等相關資訊進行配置後,實際儲存在什麼檔案中?
答:儲存在此Domain的config.xml檔案中,它是伺服器的核心配置檔案。
206、說說weblogic中一個Domain的預設目錄結構?比如要將一個簡單的helloWorld.jsp放入何目錄下,然後在瀏覽器上打入http://主機:埠號//helloword.jsp就可以看到執行結果了? 又比如這其中用到了一個自己寫的javaBean該如何辦?
答:Domain目錄\伺服器目錄\applications,將應用目錄放在此目錄下將可以作為應用訪問,如果是Web應用,應用目錄需要滿足Web應用目錄要求,jsp檔案可以直接放在應用目錄中,Javabean需要放在應用目錄的WEB-INF目錄的classes目錄中,設定伺服器的預設應用將可以實現在瀏覽器上無需輸入應用名。
207、在weblogic中釋出ejb需涉及到哪些配置檔案?
答:不同型別的EJB涉及的配置檔案不同,都涉及到的配置檔案包括ejb-jar.xml,weblogic-ejb-jar.xml,CMp實體Bean一般還需要weblogic-cmp-rdbms-jar.xml
208、如何在weblogic中進行ssl配置與客戶端的認證配置或說說j2ee(標準)進行ssl的配置?
答:預設安裝中使用DemoIdentity.jks和DemoTrust.jks KeyStore實現SSL,需要配置伺服器使用Enable SSL,配置其埠,在產品模式下需要從CA獲取私有金鑰和數字證書,建立identity和trust keystore,裝載獲得的金鑰和數字證書。可以配置此SSL連線是單向還是雙向的。
209、如何檢視在weblogic中已經發布的EJB?