導航:首頁 > 編程語言 > javaio試題

javaio試題

發布時間:2022-05-04 07:28:52

java框架Netty的io結構是什麼這是面試題

主從Reactor多線程Nio結構,主從Reactor線程模型的特點是:服務端用於接收客戶端連接的不再是個1個單獨的NIO線程,而是一個獨立的NIO線程池。Acceptor接收到客戶端TCP連接請求處理完成後(可能包含接入認證等),將新創建的SocketChannel注冊到IO線程池(sub reactor線程池)的某個IO線程上,由它負責SocketChannel的讀寫和編解碼工作。Acceptor線程池僅僅只用於客戶端的登陸、握手和安全認證,一旦鏈路建立成功,就將鏈路注冊到後端subReactor線程池的IO線程上,由IO線程負責後續的IO操作。
利用主從NIO線程模型,可以解決1個服務端監聽線程無法有效處理所有客戶端連接的性能不足問題。
它的工作流程總結如下:
從主線程池中隨機選擇一個Reactor線程作為Acceptor線程,用於綁定監聽埠,接收客戶端連接;
Acceptor線程接收客戶端連接請求之後創建新的SocketChannel,將其注冊到主線程池的其它Reactor線程上,由其負責接入認證、IP黑白名單過濾、握手等操作;
步驟2完成之後,業務層的鏈路正式建立,將SocketChannel從主線程池的Reactor線程的多路復用器上摘除,重新注冊到Sub線程池的線程上,用於處理I/O的讀寫操作。

❷ java面試考IO的多嗎

IO文件流嗎 還好,一般般。會有一些文件讀寫之類的面試題,主要出現在筆試上。

❸ Java語言考題試題,請大家幫我做做。高分160分!主要用到多線程 字元串拆分 IO流,這個題目我沒有做出來

主體由兩個類來完成,一個伺服器類,監聽連接,並將來自客戶端的連接加到一個隊列中

另一個是處理線程類,從隊列中獲取到連接,並從連接中讀取數據寫文件,然後響應客戶端


伺服器類

packagett;

importjava.net.ServerSocket;
importjava.net.Socket;
importjava.util.concurrent.ArrayBlockingQueue;
importjava.util.concurrent.BlockingQueue;

publicclassSimpleHttpServer{

//監聽的伺服器
privateServerSocketsoc;

//監聽的埠
privateintport;

//待處理隊列

privateBlockingQueue<Socket>queue;

//創建伺服器
publicSimpleHttpServer(intport){

this.port=port;

this.queue=newArrayBlockingQueue<Socket>(200);

}

//啟動伺服器
publicvoidstartServer()throwsException{

this.soc=newServerSocket(port);
System.out.println("伺服器啟動,監聽"+this.port+"埠");

//啟動處理線程
DealThreadthread=newDealThread(this.queue);
thread.start();


//開始獲取來自客戶端的連接,將接收到的連接加入到隊列中,供處理線程處理
while(true){
//接受到新的連接
SocketclientSocket=this.soc.accept();
//加入到隊列中
queue.put(clientSocket);
}
}

publicstaticvoidmain(String[]args)throwsException{

SimpleHttpServersh=newSimpleHttpServer(80);
sh.startServer();

}

}


處理線程類

packagett;

importjava.io.BufferedReader;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.InputStreamReader;
importjava.net.Socket;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Properties;
importjava.util.concurrent.BlockingQueue;

{

privateBlockingQueue<Socket>queue;

publicDealThread(BlockingQueue<Socket>queue){

super();
this.queue=queue;
}

publicvoidrun(){

while(true){
SocketclientSocket=null;
BufferedReaderbr=null;
Map<String,String>paramMap=newHashMap<String,String>(); //用來保存上傳參數的map,鍵名為參數名,鍵值為參數值,例如user=Clientl1,將保存為user鍵名,Clientl1為鍵值
try{

//從隊列中獲取到新的連接
clientSocket=queue.take();

//從連接中讀取數據
br=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()));
Stringinput=br.readLine(); //讀取客戶端的輸入,按題目要求,應為:GET/?user=Clientl1&name=xxx&pwd=xxxHTTP/1.1
String[]inputArray=input.split(""); //使用空格將字元串轉為數組,第一項為GET/第二項為?user=Clientl1&name=xxx&pwd=xxx,第三項為HTTP/1.1

Stringstr=inputArray[1]; //str即為?user=Clientl1&name=xxx&pwd=xxx

//去掉問號,即去掉首字母
str=str.substring(1);

//用「&」分隔符,再次將字元串轉為數組,轉化的結果為user=Clientl1,name=xxx,pwd=xxx
String[]strArray=str.split("&");

for(Strings:strArray){
//等號前面的部份作為鍵名,等號後面的部份作為鍵值 如user=Clientl1則user為鍵名,Clientl1為鍵值
paramMap.put(s.substring(0,s.indexOf("=")),s.substring(s.indexOf("=")+1));
}

Stringuser=paramMap.get("user");
Stringname=paramMap.get("name");
Stringpwd=paramMap.get("pwd");

//user或name或pwd任一項為空,則響應「報文格式不正確」給客戶端
if(user==null||name==null||pwd==null){
//響應客戶端
clientSocket.getOutputStream().write("報文格式不正確".getBytes());
clientSocket.getOutputStream().flush();
}
else
{
//寫perperties文件
Propertiesprop=newProperties();
prop.setProperty("name",name);
prop.setProperty("pwd",pwd);
//創建文件
Filefile=newFile("D:\"+user+".perperties");
prop.store(newFileOutputStream(file),null);

//響應客戶端
clientSocket.getOutputStream().write("處理成功".getBytes());
clientSocket.getOutputStream().flush();
}


}catch(Exceptione)
{
e.printStackTrace();
}finally{
//關閉資源
try{
if(br!=null)
br.close();
if(clientSocket!=null)
clientSocket.close();
}catch(Exceptione)
{
e.printStackTrace();
}
}
}

}

}

❹ JAVA試題,請哪位大哥幫忙看看.

1.C 樓上d錯, applet 的執行過程:
init()->start()<->stop()->destroy() 所以最後是destroy方法. 其中start和stop是可以相互轉化的,比如你的瀏覽器是當前窗口的時候,剛進入的時候就調用start方法了,當切換為非當前窗口的時候,就調用stop方法,當瀏覽器被關閉的時候,就調用destroy方法.

2.D 介面只能是公共的.

3.D 樓上的誤會short是對表達式結果的強制轉換,其實它只是強制轉換了一個x而已,不是對整體表達式的轉換.由於y是float類型的,所以計算出來的值也只能是float類型的,再說,如果計算結果是short類型的,我返回為值float或者int也是沒有問題的,java會幫你做隱式的轉換為相應的類型,因為short的精度沒有float和int高.所以答案是D

4.B 只要return score;在花括弧裡面就是對的(不知道lz打題目的時候打對了沒有),否則是錯的. 別以為錯,題目在定義一個內部類而已.

5.B 樓上的只是想用japplet而已,要用applet應該要應用java.applet.*包
用japplet用 javax.swing.JApplet包

6.A java大小寫敏感所以a不是關鍵字,其他的this代表當前對象,void修飾為無返回值函數,都是關鍵字,const為保留字,在c++中用於定義常量.

7.C 對於類的變數是基本類型來說,默認值都是0,boolean類型都為false.如果是數值數組的話,默認的都是0.所以是c.

❺ java Io流練習題大佬幫忙做一下啊/* * 使用掃描器接收鍵盤輸入模擬用戶登陸注冊 * 要

importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.util.Map.Entry;
importjava.util.Iterator;
importjava.util.Properties;
importjava.util.Scanner;

publicclassIoTest{
staticScannersc=newScanner(System.in);
staticPropertiespro=newProperties();
staticFilefile=newFile("K:\IO測試\Bai\登陸.properties");
staticStringid=null,pass=null,num=null;
staticBufferedReaderbr;
staticBufferedWriterbw;

publicstaticvoidmain(String[]args)throwsIOException{
if(!file.exists()){
bw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(file)));
pro.store(bw,"ID/Pass");
}else{
br=newBufferedReader(newInputStreamReader(newFileInputStream(file)));
pro.load(br);
}
while(true){
System.out.println("1.注冊 2.登陸 請選擇...");
num=sc.nextLine();
System.out.println("輸入ID:");
id=sc.nextLine();
System.out.println("輸入密碼:");
pass=sc.nextLine();
if(num.equals("1"))
reg(id,pass);
else
sig(id,pass);
}
}

privatestaticvoidreg(Stringd,Stringp)throwsIOException{//注冊
if(pro.getProperty(d)!=null){
System.out.println("用戶存在不能注冊,請直接登陸");
return;
}
pro.setProperty(d,p);
bw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(file)));
pro.store(bw,"ID/Pass");
System.out.println("-->注冊成功");
}

privatestaticvoidsig(Stringd,Stringp)throwsIOException{//登陸
booleanb=false;
for(Iterator<Entry<Object,Object>>it=pro.entrySet().iterator();it.hasNext();){
Stringkey=(String)it.next().getKey();
if(key.equals(d)){
b=true;
break;
}
}
if(b){
if(!pro.getProperty(d).equals(p))
System.out.println("密碼錯誤");
else
System.out.println("登陸成功<----");
}else{
System.out.println("用戶不存在,請去注冊");
}
}
}

❻ java IO練習題

希望對你有用~~嘿嘿~~(我寫的是控制台的程序,沒用SWING做界面)
import java.io.*;
import java.util.Arrays;
import java.util.Scanner;

public class AbsenteeNote {
public static void main(String[] args) throws IOException {
int select = 0;
select = welcome();
if (select == 1 || select == 2) {
writeLetter(select);
} else {
viewLetter();
}
}

private static int welcome() {
int num = 0;//用於第一層菜單的選擇
int num1 = 0;//用於第二層菜單的選擇
do {
System.out.println("1:編寫請假條");
System.out.println("2:查看請假條");
System.out.print("請選擇功能號:");
Scanner in = new Scanner(System.in);
num = in.nextInt();
} while (num != 1 && num != 2);//若輸出的數字不為1或2,則繼續選擇
if (num == 1) {
do {
System.out.println("1:病假");
System.out.println("2:事假");
System.out.print("請選擇功能號:");
Scanner in = new Scanner(System.in);
num1 = in.nextInt();
} while (num1 != 1 && num1 != 2);
return num1;
} else {//當輸入的是2(查看請假條),則任意返回一個值。
return 0;
}
}

private static void viewLetter() {//查看請假條
File letter = new File("c:\\Letter\\Letter.txt");
try {
FileInputStream view = new FileInputStream(letter);
byte b[] = new byte[view.available()];

while (view.read(b) != -1) {
FilterOutputStream viewContain=new FilterOutputStream(System.out);
System.out.println("假條內容如下:");
viewContain.write(b);
viewContain.close();
}
view.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在!!!");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}

private static void writeLetter(int num1) {//寫請假條
String str = new String();
if (num1 == 1)
str = "我因發燒,請假一天 ";
else
str = "參加婚禮,於4.10請假一天";
File letter = new File("c:\\Letter\\Letter.txt");
StringBuilder contain = new StringBuilder();
Scanner in = new Scanner(System.in);
System.out.print("寄信人地址:");
contain.append("寄信人地址:" + in.nextLine() + "\r\n");
System.out.print("收件人地址:");
contain.append("收件人地址:" + in.nextLine() + "\r\n");
System.out.print("簽名:");
contain.append("簽名:" + in.nextLine() + "\r\n");
System.out.print("日期:");
contain.append("日期:" + in.nextLine() + "\r\n");
contain.append(str);
byte[] input = contain.toString().getBytes();
try {
FileOutputStream out = new FileOutputStream(letter);
out.write(input, 0, input.length);
System.out.println("請假條生成成功!!!");
out.close();
} catch (FileNotFoundException e) {
System.out.println("文件不存在!!!");
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

❼ 本人初學java想找些編程例子,鞏固前面所學,最好關於面向對象三大思想方面和多線程、IO等。不要選擇題。

【試題1】任務一:求階乘
l 接受一個輸入,輸出這個數的階乘
l 用長整型計算

任務二:輸出階梯形式的9*9口訣表,如圖1.1所示。
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
圖1.1 階梯形式的9*9口訣表
要求:使用循環結構語句實現。

任務三:編程實現判斷一個整數是否為「水仙花數」。所謂「水仙花數」是指一個三位的整數,其各位數字立方和等於該數本身。例如:153是一個「水仙花數」,因為153=13+53+33。
要求:用帶有一個輸入參數的方法或函數實現,返回值類型為布爾類型。
【試題2】

任務一:已知某個班有M個學生,學習N門課程,已知所有學生的各科成績,編程:分別求每個學生的平均成績,並輸出。
要求:
l 定義一個二維數組,用於存放M個學生的N門成績。定義一個一維數組,用於存放每個學生的平均成績。
l 做二重循環,將每個學生的成績輸入到該二維數組中。
l 做二重循環,對已經存在於二維數組的中的值進行平均分計算,將結果保存到一個一維數組中。
l 做循環輸出該一維數組(即平均分)的值。

任務二:編寫一個程序找出100~1000之間的所有姐妹素數。
註:姐妹素數是指相鄰兩個奇數均為素數。
要求:使用循環結構語句實現。
任務三:求n以內(不包括n)同時能被3和7整除的所有自然數之和的平方根s,並作為函數值返回,最後結果s輸出到文件out.txt中。例如若n為1000時,函數值應為:s=153.909064。

【試題3】
任務一:求2!+3!+4!+5!
任務二:編寫一個程序,對用戶輸入的任意一組數字字元如{3,1,4,7,2,1,1,2,2},輸出其中出現次數最多的字元,並顯示其出現次數。如果有多個字元出現次數均為最大且相等,則輸出最先出現的那個字元和它出現的次數。例如,上面輸入的字元集合中,「1」和「2」都出現了3次,均為最大出現次數,因為「1」先出現,則輸出字元「1」和它出現的次數3次。
任務三:中華人民共和國2011年新的個人所得稅草案規定,個稅的起征點為3000元,分成7級,稅率情況見表1.3, 從鍵盤上輸入月工資,計算應交納的個人所得稅。
表1.3稅率情況表
級數
全月應納稅所得額
稅率 (%)
1
不超過1500元的(即3000-4500之間)
5
2
超過1500元至4500元的部分
10
3
超過4500元至9000元的部分
20
4
超過9000元至35000元的部分
25
5
超過35000元至55000元的部分
30
6
超過55000元至80000元的部分
35
7
超過80000元的部分
45

注意:超出部分按所在稅的級數計算,如:一個人的月收入為6000,應交個人所得稅為:1500*0.05 +((6000-3000)-1500)*0.1=225
請在鍵盤上輸入一個人的月收入,編程實現該公民所要交的稅。
例如:輸入「4000」,則輸出「你要交的稅為:50」。

【試題4】
任務一:請編寫函數fun,其功能是:將兩個兩位數的正整數a、b合並形成一個整數放在c中。合並的方式是:將a數的十位和個位數依次放在c數個位和十位上,b數的十位和個位數依次放在c數的百位和千位上。例如,當a=16,b=35,調用該函數後,c=5361。

任務二:孫悟空在大鬧蟠桃園的時候,第一天吃掉了所有桃子總數一半多一個,第二天又將剩下的桃子吃掉一半多一個,以後每天吃掉前一天剩下的一半多一個,到第n天准備吃的時候只剩下一個桃子。這下可把神仙們心疼壞了,請幫忙計算一下,第一天開始吃的時候桃園一共有多少個桃子。
要求:用循環語句實現,從鍵盤隨機輸入參數n

任務三:輸入一個5位正整數,輸出它是不是迴文數。迴文數是這樣一種數,它的逆序數和它本身相等。例如,12321的逆序數是12321,和它本身相等,所以它是迴文數。又例如25128的逆序數是82152,所以它不是迴文數。
要求:使用分支或循環結構語句實現。

【試題5】

任務一:判斷一個年份N閏年;
輸入:年份N
任務二:一個球從100m高度自由落下,每次落地後反彈回原高度的一半,再落下,再反彈。求它在第十次落地時,共經過多少米?第十次反彈多高?
任務三:Redraiment的老家住在工業區,日耗電量非常大。是政府的眼中釘肉中刺,但又沒辦法,這里頭住的可都是納稅大戶呀。
今年7月,又傳來了不幸的消息,政府要在7、8月對該區進行拉閘限電。但迫於壓力,限電制度規則不會太摳門,政府決定從7月1日停電,然後隔一天到7月3日再停電,再隔兩天到7月6日停電,依次下去,每次都比上一次晚一天。
Redraiment可是軟體專業的學生,怎麼離得開計算機。如果停電,就「英雄無用武之地」了。所以他開始盤算起自己回家的日子了,他想知道自己到家後到底要經歷多少天倒霉的停電。你能幫他算一算嗎?
要求:從鍵盤輸入放假日期,開學日期,日期限定在7、8月份,且開學日期大於放假日期。
提示:可以用數組標記停電的日期

【試題6】

任務一:定義一個電腦類,包含電腦的品牌,價格,型號。
任務二:某班同學上體育課,從1開始報數,共38人,老師要求按1,2,3重復報數,報數為1的同學往前走一步,而報數為2的同學往後退一步,試分別將往前走一步和往後退一步的同學的序號列印出來。
要求:用循環語句實現

任務三:一個人很倒霉,不小心打碎了一位婦女的一籃子雞蛋。為了賠償便詢問籃子里有多少雞蛋。那婦女說,她也不清楚,只記得每次拿兩個則剩一個,每次拿3個則剩2個,每次拿5個則剩4個,若每個雞蛋1元,請你幫忙編程,計算最少應賠多少錢?
要求:用循環語句實現,直接列印出結果不給分

【試題7】

任務一:從鍵盤接收一個整數N,統計出1~N之間能被7整除的整數的個數,以及這些能被7整除的數的和。
屏幕提示樣例:
請輸入一個整數:20
1~20之間能被7整除的數的個數:2
1~20之間能被7整除的所有數之和:21

任務二:從鍵盤輸入一個整數N,列印出有N*2-1行的菱形。
例如輸入整數4,則屏幕輸出如下菱形。

要求:使用循環結構語句實現。

任務三:編程實現判斷一個整數是否為素數。所謂素整是一個大於1的正整數,除了1和它本身,該數不能被其它的正整數整除。
要求:用帶有一個輸入參數的方法或函數實現,返回值類型為布爾類型。

【試題8】
任務一:設計一個學生類,包括學號,姓名,班次,系別,聯系電話,並包含一個構造方法。
要求:構造方法必須有5個參數,能對學生類中的屬性進行賦初值。

任務二:使用冒泡排序法對數組中的整數按升序進行排序,如下所示:
原始數組:a[]={1,9,3,7,4,2,5,0,6,8}
排序後: a[]={0,1,2,3,4,5,6,7,8,9}
要求:使用循環結構語句實現。

任務三:編程實現以下要求。n個人圍坐成一卷,從第一個人開始計數,數到m,第m個人出列,接下來繼續計數,直到所有人都出列。例如:共有5個人,數到3出列,則順序為3,1,5,2,4。
要求:用帶有兩個輸入參數(一個總人數n,一個為計數m)的方法或函數實現,返回值類型為數組。

【試題9】

任務一:輸入一行字元,輸出其中的數字的個數。例如輸入「fwEt2f44F2k8」,輸出結果為5。

任務二:用循環列印楊輝三角到N層
輸入:自然數N

任務三:刪去一維數組中相同的數
輸入 2 3 3 3 4 5 2 9 10 9 3 2 4
輸出2 3 4 5 9 10
【試題10】

任務一:定義一個矩形類,包括長,寬兩個屬性,計算周長方法和計算面積方法。

任務二:編寫程序實現:輸入一個整數,判斷它能否被3、5、7整除,並輸出以下信息之一:
能同時被3、5、7整除
能同時被3、5整除
能同時被3、7整除
能同時被5、7整除
只能被3、5、7中的一個整除
不能被3、5、7任一個整除
要求:使用分支結構語句實現。

任務三:尋找最大數經常在計算機應用程序中使用。例如:確定銷售競賽優勝者的程序要輸入每個銷售員的銷售量,銷量最大的員工為銷售競賽的優勝者,寫一個程序:從鍵盤輸入10個數,列印出其中最大的數。
要求:程序應正確使用如下兩個變數:number:當前輸入程序的數,largest:到目前為止的最大數。

給你30個題 慢慢做吧

❽ [急](明天面試題)java.io流習題

public class stringtest {
public static void main(String[] args) {
String a="i love game";
String[] aa=a.split(" ");
for(int i=aa.length-1;i>=0;i--){
System.out.print(aa[i]+" ");
}
}
}

❾ java IO一道練習題.麻煩大神們幫做一下.越簡單越好

這幾點都是最基本的IO操作,多練練,對你有好處的

閱讀全文

與javaio試題相關的資料

熱點內容
蘋果手機dcim文件夾顯示不出來 瀏覽:430
如何壓縮文件夾聯想電腦 瀏覽:583
程序員的學習之旅 瀏覽:440
apkdb反編譯 瀏覽:922
雪花演算法為什麼要二進制 瀏覽:825
在文檔中打開命令行工具 瀏覽:608
android圖標尺寸規范 瀏覽:369
python實用工具 瀏覽:208
流量計pdf 瀏覽:936
科東加密認證價格 瀏覽:532
dos命令讀文件 瀏覽:996
成為程序員需要什麼學歷 瀏覽:672
pdf農葯 瀏覽:228
canal加密 瀏覽:497
日本安卓系統和中國有什麼區別 瀏覽:137
linux命令行修改文件 瀏覽:838
從編譯和解釋的角度看 瀏覽:649
徐志摩pdf 瀏覽:651
夏天解壓球視頻 瀏覽:304
全封閉壓縮機qd91h 瀏覽:668