public
成都創(chuàng)新互聯(lián)成都企業(yè)網(wǎng)站建設(shè)服務(wù),提供成都做網(wǎng)站、網(wǎng)站建設(shè)網(wǎng)站開發(fā),網(wǎng)站定制,建網(wǎng)站,網(wǎng)站搭建,網(wǎng)站設(shè)計(jì),成都響應(yīng)式網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì)師打造企業(yè)風(fēng)格網(wǎng)站,提供周到的售前咨詢和貼心的售后服務(wù)。歡迎咨詢做網(wǎng)站需要多少錢:028-86922220
class
ThreadCaseDemo01
{
/**
*
*
*
采用Java
*
多線程技術(shù),設(shè)計(jì)實(shí)現(xiàn)一個(gè)符合生產(chǎn)者和消費(fèi)者問題的程序。對一個(gè)對象(槍膛)進(jìn)行操作,其最大容量是12顆子彈。
*
生產(chǎn)者線程是一個(gè)壓入線程
*
它不斷向槍膛中壓入子彈;消費(fèi)者線程是一個(gè)射出線程,它不斷從槍膛中射出子彈。
*/
public
static
void
main(String[]
args)
{
Gun
i
=
new
Gun();
Producter
pro
=
new
Producter(i);
Consumer
con
=
new
Consumer(i);
new
Thread(pro).start();
new
Thread(con).start();
}
}
//////////////////////////////////////////////
public
class
Gun
{
private
String
name;
private
String
content;
private
boolean
flag
=
false;
public
synchronized
void
set(String
name,
String
content)
{
if
(flag)
{
try
{
super.wait();
}
catch
(InterruptedException
e)
{
e.printStackTrace();
}
}
this.setName(name);
this.setContent(content);
flag
=
true;//保證生產(chǎn)者進(jìn)入等待狀態(tài)
super.notify();
}
public
synchronized
void
get()
{
if
(!flag)
{
try
{
super.wait();
}
catch
(InterruptedException
e)
{
e.printStackTrace();
}
}
System.out.println(this.getName()
+
"--"
+
this.getContent());
flag
=
false;//保證消費(fèi)者進(jìn)入等待狀態(tài)
super.notify();
}
public
String
getName()
{
return
name;
}
public
void
setName(String
name)
{
this.name
=
name;
}
public
String
getContent()
{
return
content;
}
public
void
setContent(String
content)
{
this.content
=
content;
}
}
//////////////////////////////////////
public
class
Consumer
implements
Runnable
{
private
Gun
gun=null;
public
Consumer
(Gun
gun)
{
this.gun=gun;
}
public
void
run()
{
for(int
i=0;i12;i++)
{
this.gun.get();
}
}
}
///////////////////////////////////////
public
class
Producter
implements
Runnable
{
private
Gun
gun=null;
public
Producter(Gun
gun)
{
this.gun=gun;
}
public
void
run()
{
boolean
flag=false;
for(int
i=0;i12;i++)
{
if(flag)
{
this.gun.set("樓主",
"給槍上了一發(fā)子彈");
flag=false;
}
else
{
this.gun.set("我","給了樓主一槍");
flag=true;
}
}
}
}
java面試題的解析方式(思路如下):
public static void main(String[] args) {
// TODO Auto-generated method stub
int up = 8;
int down = 8;
while(up=20){
if((up == 20-6) (up == 20-6)){
System.out.println("在"+up+"時(shí)到達(dá)同一地點(diǎn)");
break;
}
up += 1;
down += 1;
}
}
微軟面試題的背后
微軟的奇葩面試題答案并不重要,重要的是思考過程,而思考過程體現(xiàn)了你是否擁有公司所看重的能力,不僅是微軟,其他公司的面試也是為了測試你的某種能力,如果你提前培養(yǎng)了這種能力,相當(dāng)于知道了面試的“考綱”,在面試中自然就從容不迫,游刃有余了。
平時(shí)要知道轉(zhuǎn)化能力是看透問題,然后找到解決方案的能力。所以轉(zhuǎn)化能力最重要的是如何看透問題,也就是你思考問題的方式。
1。JVM配置能承受多少就多少
2,
StringTokenizer token=new StringTokenizer(src,",") ;
StringBuffer ok=new StringBuffer();
StringBuffer no=new StringBuffer();
while(token.hasMoreTokens()){
String temp=nextToken();
try{
Float.parseFloat(temp);
}catch(Exception e){
on.append(temp).append.(",");
}
ok.append(temp).append.(",");
}
on就是不能轉(zhuǎn)換的數(shù)據(jù); ok就是能轉(zhuǎn)換的數(shù)據(jù)
3。
import java.io.*;
import java.util.*;
class PathFileCount{
private MapString,Integer mapType=new HashMapString,Integer();
public PathFileCount(){
}
public void count(String path){
try{
File file=new File(path);
if(!file.exists()) return ;
if(file.isFile()) {
//System.out.println(file.getName());
String[] name=file.getName().split("\\.");
String lastName=name[name.length-1];
if(mapType.containsKey(lastName)) mapType.put(lastName,mapType.get(lastName)+1);
else mapType.put(lastName,1);
}//if(file.isFile())
else{
File[] list=file.listFiles();
for(int i=0;ilist.length;i++){
//System.out.println(list[i].getPath());
count(list[i].getPath());
}//for
}//else
}catch(Exception e){
}//catch
}//method
public void print(){
for(String lastName:mapType.keySet()){
System.out.println(lastName+" "+mapType.get(lastName));
}
}//method
public void sort(int tag){
ArrayList keys = new ArrayList(mapType.keySet());//得到key集合
Collections.sort(keys,new ComparatorObject(){
public int compare(Object o1,Object o2){
if(mapType.get(o1).intValue()mapType.get(o2).intValue())
return 1;
if(mapType.get(o1).intValue()==mapType.get(o2).intValue())
return 0;
else
return -1;
}
}
);
}
static public void main(String[] str){
PathFileCount p=new PathFileCount();
p.count("/opt/");
p.sort(0);
p.print();
}
}//class
4。weblogic8.1默認(rèn)JDK4.0 不支持 for(String a:list)
5。同一代碼區(qū)域不超過2層。
if()內(nèi)盡量不使用 Ab==false
下面是10道java基礎(chǔ)面試題,后附答案
1.什么是 Java 虛擬機(jī)?為什么 Java 被稱作是“平臺(tái)無關(guān)的編程語言”?
Java 虛擬機(jī)是一個(gè)可以執(zhí)行 Java 字節(jié)碼的虛擬機(jī)進(jìn)程。Java 源文件被編譯成能被 Java 虛擬機(jī)執(zhí)行的字節(jié)碼文件。
Java 被設(shè)計(jì)成允許應(yīng)用程序可以運(yùn)行在任意的平臺(tái),而不需要程序員為每一個(gè)平臺(tái)單獨(dú)重寫或者是重新編譯。Java 虛擬機(jī)讓這個(gè)變?yōu)榭赡?,因?yàn)樗赖讓佑布脚_(tái)的指令長度和其他特性。
2.“static”關(guān)鍵字是什么意思?Java 中是否可以覆蓋(override)一個(gè) private 或者是static 的方法?
“static”關(guān)鍵字表明一個(gè)成員變量或者是成員方法可以在沒有所屬的類的實(shí)例變量的情況下被訪問。
Java 中 static 方法不能被覆蓋,因?yàn)榉椒ǜ采w是基于運(yùn)行時(shí)動(dòng)態(tài)綁定的,而 static 方法是編譯時(shí)靜態(tài)綁定的。static 方法跟類的任何實(shí)例都不相關(guān),所以概念上不適用。
3.JDK 和 JRE 的區(qū)別是什么?
Java 運(yùn)行時(shí)環(huán)境(JRE)是將要執(zhí)行 Java 程序的 Java 虛擬機(jī)。它同時(shí)也包含了執(zhí)行 applet 需要的瀏覽器插件。Java 開發(fā)工具包 (JDK)是完整的 Java 軟件開發(fā)包,包含了 JRE,編譯器和其他的工具(比如:JavaDoc,Java 調(diào)試器),可以讓開發(fā)者開發(fā)、編譯、執(zhí)行 Java 應(yīng)用程序。
4.是否可以在 static 環(huán)境中訪問非 static 變量?
static 變量在 Java 中是屬于類的,它在所有的實(shí)例中的值是一樣的。當(dāng)類被 Java 虛擬機(jī)載入的時(shí)候,會(huì)對 static 變量進(jìn)行初始化。如果你的代碼嘗試不用實(shí)例來訪問非 static 的變量,編譯器會(huì)報(bào)錯(cuò),因?yàn)檫@些變量還沒有被創(chuàng)建出來,還沒有跟任何實(shí)例關(guān)聯(lián)上。
5.Java 支持的數(shù)據(jù)類型有哪些?什么是自動(dòng)拆裝箱?
Java 語言支持的 8 中基本數(shù)據(jù)類型是:
?byte
?short
?int
?long
?float
?double
?boolean
?char
自動(dòng)裝箱是 Java 編譯器在基本數(shù)據(jù)類型和對應(yīng)的對象包裝類型之間做的一個(gè)轉(zhuǎn)化。比如:把 int 轉(zhuǎn)化成 Integer,double 轉(zhuǎn)化成 double,等等。反之就是自動(dòng)拆箱。
6.Java 支持多繼承么?
不支持,Java 不支持多繼承。每個(gè)類都只能繼承一個(gè)類,但是可以實(shí)現(xiàn)多個(gè)接口。
7.Java 中,什么是構(gòu)造函數(shù)?什么是構(gòu)造函數(shù)重載?什么是復(fù)制構(gòu)造函數(shù)?
當(dāng)新對象被創(chuàng)建的時(shí)候,構(gòu)造函數(shù)會(huì)被調(diào)用。每一個(gè)類都有構(gòu)造函數(shù)。在程序員沒有給類提供構(gòu)造函數(shù)的情況下,Java 編譯器會(huì)為這個(gè)類創(chuàng)建一個(gè)默認(rèn)的構(gòu)造函數(shù)。
Java 中構(gòu)造函數(shù)重載和方法重載很相似。可以為一個(gè)類創(chuàng)建多個(gè)構(gòu)造函數(shù)。每一個(gè)構(gòu)造函數(shù)必須有它自己唯一的參數(shù)列表。
Java 不支持像 C++中那樣的復(fù)制構(gòu)造函數(shù),這個(gè)不同點(diǎn)是因?yàn)槿绻悴蛔约簩憳?gòu)造函數(shù)的情況下,Java 不會(huì)創(chuàng)建默認(rèn)的復(fù)制構(gòu)造函數(shù)。
8.Java 中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?
Java 中的方法重載發(fā)生在同一個(gè)類里面兩個(gè)或者是多個(gè)方法的方法名相同但是參數(shù)不同的情況。與此相對,方法覆蓋是說子類重新定義了父類的方法。方法覆蓋必須有相同的方法名,參數(shù)列表和返回類型。覆蓋者可能不會(huì)限制它所覆蓋的方法的訪問。
9.接口和抽象類的區(qū)別是什么?
Java 提供和支持創(chuàng)建抽象類和接口。它們的實(shí)現(xiàn)有共同點(diǎn),不同點(diǎn)在于:
?接口中所有的方法隱含的都是抽象的。而抽象類則可以同時(shí)包含抽象和非抽象的方法。
?類可以實(shí)現(xiàn)很多個(gè)接口,但是只能繼承一個(gè)抽象類
?類如果要實(shí)現(xiàn)一個(gè)接口,它必須要實(shí)現(xiàn)接口聲明的所有方法。但是,類可以不實(shí)現(xiàn)抽象類聲明的所有方法,當(dāng)然,在這種情況下,類也必須得聲明成是抽象的。
?抽象類可以在不提供接口方法實(shí)現(xiàn)的情況下實(shí)現(xiàn)接口。
?Java 接口中聲明的變量默認(rèn)都是 final 的。抽象類可以包含非 final 的變量。
?Java 接口中的成員函數(shù)默認(rèn)是 public 的。抽象類的成員函數(shù)可以是 private, protected 或者是 public。
?接口是絕對抽象的,不可以被實(shí)例化。抽象類也不可以被實(shí)例化,但是,如果它包含 main 方法的話是可以被調(diào)用的。
10.什么是值傳遞和引用傳遞?
對象被值傳遞,意味著傳遞了對象的一個(gè)副本。因此,就算是改變了對象副本,也不會(huì)影響源對象的值。
對象被引用傳遞,意味著傳遞的并不是實(shí)際的對象,而是對象的引用。因此,外部對引用對象所做的改變會(huì)反映到所有的對象上。
最后祝你面試順利!