2012年12月3日 #
2012年10月29日 #
而靜態方法是被動執行的 在調用的時候執行
http://www.cn-java.com/www1/?uid-694384-action-viewspace-itemid-84972
2012年10月23日 #
public class QSort
{
/**
* @param args
*/
public static void main(String[] args)
{
// TODO 自動生成方法存根
quicksort qs = new quicksort();
int data[] = {44,22,2,32,54,22,88,77,99,11};
qs.data = data;
qs.sort(0, qs.data.length-1);
qs.display();
}
}
class quicksort
{
public int data[];
private int partition(int sortArray[],int low,int hight)
{
int key = sortArray[low];
while(low<hight)
{
while(low<hight && sortArray[hight]>=key)
hight--;
sortArray[low] = sortArray[hight];
while(low<hight && sortArray[low]<=key)
low++;
sortArray[hight] = sortArray[low];
}
sortArray[low] = key;
return low;
}
public void sort(int low,int hight)
{
if(low<hight)
{
int result = partition(data,low,hight);
sort(low,result-1);
sort(result+1,hight);
}
}
public void display()
{
for(int i=0;i<data.length;i++)
{
System.out.print(data[i]);
System.out.print(" ");
}
}
}
2012年10月2日 #
2012年9月26日 #
首先是筆試:
1 松翰的筆試: 這個公司主要做C和C++,并且熟悉linux系統,這個宣講會是去玩的,然后參加了筆試。筆試題是英語填詞,C部分,C++部分,題目很基礎,C部分做的不錯 ,C++部分沒有做
2 優酷土豆的筆試: 筆試的時間是90分鐘,然后題目涉及廣泛從算法 數據結構到海量數據處理,還有一些自己感覺莫名其妙的題目。做的情況嘛 自己沒什么信心,就當去做一下題目回來針對學習(微軟面試100題系列)。
其次是面試:
松翰的面試: 面試官通過簡歷對與公司有意義或者他本人有想法的東西,鑒于公司的研發內容問的我是linux和一些apache(web服務器)的內容,還有一些我不曾了解的領域,自動化檢測(腳本的吧?)。總結下還是平時積累很重要。
松翰 面試的知識點:
1 apache與tomcat的區別:
解析一
apache支持靜態頁,tomcat支持動態的,比如servlet等, 一般使用apache+tomcat的話,apache只是作為一個轉發,對jsp的處理是由tomcat來處理的。 apache可以支持phpcgiperl,但是要使用java的話,你需要tomcat在apache后臺支撐,將java請求由apache轉發給tomcat處 理。 apache是web服務器,tomcat是應用(java)服務器,它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴展,但是可以獨立于apache運行。
這兩個有以下幾點可以比較的:
1、兩者都是apache組織開發的
2、兩者都有HTTP服務的功能
3、兩者都是免費的
不同點:
Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等)
Tomcat是Apache組織在符合J2EE的JSP、Servlet標準下開發的一個JSP服務器
解析二:
APACHE是一個web服務器環境程序 啟用他可以作為web服務器使用 不過只支持靜態網頁 如(asp,php,cgi,jsp)等動態網頁的就不行 如果要在APACHE環境下運行jsp 的話就需要一個解釋器來執行jsp網頁 而這個jsp解釋器就是TOMCAT, 為什么還要JDK呢?因為jsp需要連接數據庫的話 就要jdk 來提供連接數據庫的驅程,所以要運行jsp的web服務器平臺就需要APACHE+TOMCAT+JDK 整合的好處是:
如果客戶端請求的是靜態頁面,則只需要Apache服務器響應請求 如果客戶端請求動態頁面,則是Tomcat服務器響應請求 因為jsp是服務器端解釋代碼的,這樣整合就可以減少Tomcat的服務開銷 C是一個結構化語言,如譚老爺子所說:它的重點在于算法和數據結構。C程序的設計首要考慮的 是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制),而對于C++,首要考慮的是如何構造一個對象模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取對象的狀態信息得到輸出或實現過程(事務)控制。
解析三:
apache:側重于http server
tomcat:側重于servlet引擎,如果以standalone方式運行,功能上與apache等效 , 支持JSP,但對靜態網頁不太理想;
apache是web服務器,tomcat是應用(java)服務器,它只是一個servlet(jsp也翻譯成servlet)容器,可以認為是apache的擴展,但是可以獨立于apache運行。
換句話說,apache是一輛卡車,上面可以裝一些東西如html等。但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上。
2 linux基礎知識
linux自啟動設置:http://www.xxlinux.com/linux/article/accidence/technique/20070719/9065.html
2012年8月26日 #
Collection框架
集合框架(Collection Framework)泛指java.util包的若干個類和接口.如Collection,List,ArrayList,LinkedList,Vector(自動增長數組),HashSet,HashMap等. 集合框架中的類主要封裝的是典型的數據結構,如動態數組,鏈表,堆棧,集合,哈希表等.
集合框架類似編程中經常用到的工具類,使得編碼這專注于業務層的實現,不需要從底層實現相關細節—“數據結構的封裝”和”典型算法的實現”.
http://weipeng2k.iteye.com/blog/286620
集合框架的最根基的接口Collection,看一下它的聲明public interface Collection<E> extends Iterable<E>,可以看出它繼承了Iterable(可迭代的)接口,就相當于說Collection的具體實現類均可以利用Iterator了,這也是集合均支持增強型For循環的原因。
http://developer.51cto.com/art/200909/149543.htm
Collection框架中實現比較要實現什么接口
http://www.aygfsteel.com/fastunit/archive/2008/04/08/191533.html
一個類實現了Camparable接口則表明這個類的對象之間是可以相互比較的,這個類對象組成的集合就可以直接使用sort方法排序。
Comparator可以看成一種算法的實現,將算法和數據分離,Comparator也可以在下面兩種環境下使用:
1、類的設計師沒有考慮到比較問題而沒有實現Comparable,可以通過Comparator來實現排序而不必改變對象本身
2、可以使用多種排序標準,比如升序、降序等
ArrayList和Vector都是使用數組方式存儲數據,此數組元素數大于實際存儲的數據以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數組元素移動等內存操作,所以索引數據快而插入數據慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現存儲,按序號索引數據需要進行前向或后向遍歷,但是插入數據時只需要記錄本項的前后項即可,所以插入速度較快。
LinkedList也是線程不安全的,LinkedList提供了一些方法,使得LinkedList可以被當作堆棧和隊列來使用。
2012年8月23日 #
2012年8月18日 #
子線程循環10次,接著主線程循環100,接著又回到子線程循環10次,接著再回到主線程又循環100,如此循環50次,請寫出程序。
public class ThreadTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ThreadTest().init();
}
public void init()
{
final Business business = new Business();
new Thread(
new Runnable()
{
public void run() {
for(int i=0;i<50;i++)
{
business.SubThread(i);
}
}
}
).start();
for(int i=0;i<50;i++)
{
business.MainThread(i);
}
}
private class Business
{
boolean bShouldSub = true;//這里相當于定義了控制該誰執行的一個信號燈
public synchronized void MainThread(int i)
{
if(bShouldSub)
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int j=0;j<5;j++)
{
System.out.println(Thread.currentThread().getName() + ":i=" + i +",j=" + j);
}
bShouldSub = true;
this.notify();
}
public synchronized void SubThread(int i)
{
if(!bShouldSub)
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(int j=0;j<10;j++)
{
System.out.println(Thread.currentThread().getName() + ":i=" + i +",j=" + j);
}
bShouldSub = false;
this.notify();
}
}