java笔试题(题目+解析)
測試一
- 選擇題(不定項(xiàng),每題2分,共20分)
1.不能用來修飾interface的有( ACD )
A.private
B.public
C.protected
D.static
解答:ACD
修飾接口可以是public和默認(rèn)
2.在關(guān)系數(shù)據(jù)庫系統(tǒng)中,為了簡化用戶的查詢操作,而又不增加數(shù)據(jù)的存儲(chǔ)空間,常用的方法是創(chuàng)建( C?)
A.表(table)
B.游標(biāo)(cursor)
C.視圖(view)
D.索引(index)
解析:數(shù)據(jù)庫試圖具有以下幾個(gè)作用:簡化用戶操作;使用戶能以多種角度看待同一數(shù)據(jù);支持重構(gòu)數(shù)據(jù)庫的邏輯獨(dú)立性;視圖能夠提供安全保護(hù)同時(shí)不增加數(shù)據(jù)的儲(chǔ)存空間
3.下面有關(guān)SPRING的事務(wù)傳播特性,說法錯(cuò)誤的是?(?B?)
A.PROPAGATION_SUPPORTS:支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就以非事務(wù)方式執(zhí)行
B.PROPAGATION_REQUIRED:支持當(dāng)前事務(wù),如果當(dāng)前沒有事務(wù),就拋出異常
C.PROPAGATION_REQUIRES_NEW:新建事務(wù),如果當(dāng)前存在事務(wù),把當(dāng)前事務(wù)掛起
D.PROPAGATION_NESTED:支持當(dāng)前事務(wù),新增Savepoint點(diǎn),與當(dāng)前事務(wù)同步提交或回滾
解析:Spring的API設(shè)計(jì)很不錯(cuò),基本上根據(jù)英文翻譯就能知道作用:Required:必須的。說明必須要有事物,沒有就新建事物。supports:支持。說明僅僅是支持事務(wù),沒有事務(wù)就非事務(wù)方式執(zhí)行。mandatory:強(qiáng)制的。說明一定要有事務(wù),沒有事務(wù)就拋出異常。required_new:必須新建事物。如果當(dāng)前存在事物就掛起。not_supported:不支持事物,如果存在事物就掛起。never:絕不有事務(wù)。如果存在事物就拋出異常
4.下面有關(guān)struts1和struts2的區(qū)別,描述錯(cuò)誤的是?(? B? )
A.Struts1要求Action類繼承一個(gè)抽象基類。Struts 2 Action類可以實(shí)現(xiàn)一個(gè)Action接口
B.Struts1 Action對象為每一個(gè)請求產(chǎn)生一個(gè)實(shí)例。Struts2 Action是單例模式并且必須是線程安全的
C.Struts1 Action 依賴于Servlet API,Struts 2 Action不依賴于容器,允許Action脫離容器單獨(dú)被測試
D.Struts1 整合了JSTL,Struts2可以使用JSTL,但是也支持OGNL
解析:從action類上分析:
1. ?Struts1要求Action類繼承一個(gè)抽象基類。Struts1的一個(gè)普遍問題是使用抽象類編程而不是接口。?
???2. Struts 2 Action類可以實(shí)現(xiàn)一個(gè)Action接口,也可實(shí)現(xiàn)其他接口,使可選和定制的服務(wù)成為可能。Struts2提供一個(gè)ActionSupport基類去實(shí)現(xiàn)常用的接口。Action接口不是必須的,任何有execute標(biāo)識(shí)的POJO對象都可以用作Struts2的Action對象。
從Servlet 依賴分析:?
???3. Struts1 Action 依賴于Servlet API ,因?yàn)楫?dāng)一個(gè)Action被調(diào)用時(shí)HttpServletRequest 和 HttpServletResponse 被傳遞給execute方法。?
???4. Struts 2 Action不依賴于容器,允許Action脫離容器單獨(dú)被測試。如果需要,Struts2 Action仍然可以訪問初始的request和response。但是,其他的元素減少或者消除了直接訪問HttpServetRequest 和 HttpServletResponse的必要性。
從action線程模式分析:?
???5. Struts1 Action是單例模式并且必須是線程安全的,因?yàn)閮H有Action的一個(gè)實(shí)例來處理所有的請求。單例策略限制了Struts1 Action能作的事,并且要在開發(fā)時(shí)特別小心。Action資源必須是線程安全的或同步的。?
???6. Struts2 Action對象為每一個(gè)請求產(chǎn)生一個(gè)實(shí)例,因此沒有線程安全問題。(實(shí)際上,servlet容器給每個(gè)請求產(chǎn)生許多可丟棄的對象,并且不會(huì)導(dǎo)致性能和垃圾回收問題)
5.以下關(guān)于子查詢和Group?By的描述正確的有(? ?A B C D ??)
A.沒有出現(xiàn)在Group?By子句后面的列名不能出現(xiàn)在Select字句非合計(jì)函數(shù)表達(dá)式中
B.在Select子句的后面,只能有兩種類型的表達(dá)式,一種是合計(jì)函數(shù),一種是出現(xiàn)在Group?By子句后面的列名
C.不能在子查詢中包含Order?By?子句
D.如果子查詢的結(jié)果為空,那么外查詢條件始終不會(huì)成立
解析:group by:在select子句中只能有兩種類型表達(dá)式,一種是合計(jì)函數(shù),一種是出現(xiàn)在group by子句后面的列名,沒有出現(xiàn)在group by子句后面的列名不可以出現(xiàn)在select 子句的非合計(jì)函數(shù)表達(dá)式中。如果在select語句中沒有出現(xiàn)group by子句,則不能在select子句中同時(shí)出現(xiàn)單個(gè)列名和合計(jì)函數(shù)的混合現(xiàn)象。如果要限制分組中的數(shù)據(jù),則可以使用having子句而不能使用where子句
6.以下選項(xiàng)屬于進(jìn)程間通信的是( ??ABD ??)
A.管道
B.套接字
C.內(nèi)存
D.消息隊(duì)列
解析:進(jìn)程中的幾種通信方式:
1)管道:管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng)。而且只能在具有血緣關(guān)系(父子進(jìn)程之間)的的進(jìn)程間使用。
2)信號(hào)量:信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來控制多個(gè)進(jìn)程對共享資源的訪問
3)消息隊(duì)列:消息隊(duì)列是由消息組成的鏈表,存放在內(nèi)核中,并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)
4)信號(hào):信號(hào)是有一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某一事件已經(jīng)發(fā)生
5)共享內(nèi)存:共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問
6)套接字:即Socket,是一種通信機(jī)制,憑借這種機(jī)制,客戶/服務(wù)器系統(tǒng)的開發(fā)工作既可以在本地單機(jī)上進(jìn)行,也可以跨網(wǎng)絡(luò)進(jìn)行
7.下面程序運(yùn)行之后,x的值是(?A? )
void swap(int a, int b)
{
??? int t = a;
??? a = b;
??? b = t;
}
??? …
int x = 2;
int y = 3;
swap(x, y);
A. 2 ??????????B.3 ?????????C.5 ?????????D.6
解析:值參數(shù)傳遞不能實(shí)現(xiàn)交換兩個(gè)整數(shù),所以X最后還是2,想要實(shí)現(xiàn)兩個(gè)值交換可以已數(shù)組的形式實(shí)現(xiàn)
8.看以下代碼:
文件名稱:forward.jsp
??<html> ?
?? ??<head><title> 跳轉(zhuǎn) ?</title> </head>?
?? ??<body> ?
?? ? ? ??<jsp:forward?page="index.htm"/> ? ??
?? ??</body>
?</html>?
如果運(yùn)行以上jsp文件,地址欄的內(nèi)容為( ?A ?)
A.http://127.0.0.1:8080/myjsp/forward.jsp
B.http://127.0.0.1:8080/myjsp/index.jsp
C.http://127.0.0.1:8080/myjsp/index.htm
D.http://127.0.0.1:8080/myjsp/forward.htm
解析:
forward和redirect是最常問的兩個(gè)問題:
forward,服務(wù)器獲取跳轉(zhuǎn)頁面內(nèi)容傳給用戶,用戶地址欄不變
redirect,是服務(wù)器向用戶發(fā)送轉(zhuǎn)向的地址,redirect后地址欄變成新的地址
因此這個(gè)題是A
redirect:請求重定向:客戶端行為,本質(zhì)上為2次請求,地址欄改變,前一次請求對象消失。舉例:你去銀行辦事(forward.jsp),結(jié)果告訴你少帶了東西,你得先去警察局辦(index.html)臨時(shí)身份證,這時(shí)你就會(huì)走出銀行,自己前往警察局,地址欄變?yōu)閕ndex.html.
forward:請求轉(zhuǎn)發(fā):服務(wù)器行為,地址欄不變。舉例:你把錢包落在出租車上,你去警察局(forward.jsp)報(bào)案,警察局說錢包落在某某公司的出租車上(index.html),這時(shí)你不用親自去找某某公司的出租車,警察局讓出租車自己給你送來,你只要在警察局等就行。所以地址欄不變,依然為forward.jsp
9.下列說法錯(cuò)誤的有( ?ACD ?)
A. 在類方法中可用this來調(diào)用本類的類方法
B. 在類方法中調(diào)用本類的類方法時(shí)可直接調(diào)用
C. 在類方法中只能調(diào)用本類中的類方法
D. 在類方法中絕對不能調(diào)用實(shí)例方法
解答:ACD
A.在類方法中不能使用this關(guān)鍵字
C.在類方法中可以調(diào)用其它類中的類方法
D.在類方法中可以通過實(shí)例化對象調(diào)用實(shí)例方法
10.下面能讓線程停止執(zhí)行的有(多選)( ?ABDEF ?)
A. sleep();
B. stop();
C. notify();
D. synchronized();
E. yield();
F. wait();
G. notifyAll();
解答:ABDEF
sleep:導(dǎo)致此線程暫停執(zhí)行指定時(shí)間
stop: 這個(gè)方法將終止所有未結(jié)束的方法,包括run方法。
synchronized():對象鎖
yield:當(dāng)前正在被服務(wù)的線程可能覺得cpu的服務(wù)質(zhì)量不夠好,于是提前退出,這就是yield。
wait:當(dāng)前正在被服務(wù)的線程需要睡一會(huì),醒來后繼續(xù)被服務(wù)
- 填空題(每題2分,共20分)
1 Java語言的各種數(shù)據(jù)類型之間提供兩種轉(zhuǎn)換,自動(dòng)轉(zhuǎn)換和????強(qiáng)制轉(zhuǎn)換????
2 Java 中使用關(guān)鍵字?定義抽象類??????abstract?????????????
3 java方法中參數(shù)傳遞的原則有2種,一種是????按值傳遞??,另一種是???按引用傳遞???
4 用static修飾的方法,稱為靜態(tài)方法。它們不是對象的方法,而是整個(gè)類的方法。靜態(tài)方法只能處理用關(guān)鍵字????static????修飾的數(shù)據(jù)。
5 在Java中有一種叫作??構(gòu)造函數(shù)??特殊方法,我們在程序中用它來對類的對象成員進(jìn)行初始化。
6 被關(guān)鍵字___final_______修飾的方法是不能被當(dāng)前類的子類重新定義的方法
7 Java程序中整數(shù)常量默認(rèn)是????int????類型,浮點(diǎn)數(shù)默認(rèn)的是????double???類型?
8 main方法的聲明格式?????public static?void main(String[] args)????
9 Java中所有類都是????java.lang.object????的子類。
10 定義接口的關(guān)鍵字是??????interface?????
- 簡答題(每題5分,30分)
1.什么叫死鎖,怎么解決死鎖
??死鎖:有兩個(gè)進(jìn)程A和B,A持有資源a等待b資源,B持有資源b等待a資源,兩個(gè)進(jìn)程都在等待另一個(gè)資源的同時(shí)不釋放資源,就形成死鎖。
形成死鎖的四個(gè)必要條件:
(1) 互斥條件:一個(gè)資源每次只能被一個(gè)進(jìn)程使用。
(2) 請求與保持條件:一個(gè)進(jìn)程因請求資源而阻塞時(shí),對已獲得的資源保持不放。
(3) 不剝奪條件:進(jìn)程已獲得的資源,在末使用完之前,不能強(qiáng)行剝奪。
(4) 循環(huán)等待條件:若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源關(guān)系。
?解決:
1.首先一個(gè)可行的做法是釋放所有鎖,回退,并且等待一段隨機(jī)的時(shí)間后重試。這個(gè)和簡單的加鎖超時(shí)類似,不一樣的是只有死鎖已經(jīng)發(fā)生了才回退,而不會(huì)是因?yàn)榧渔i的請求超時(shí)了。
2.回退和等待,但是如果有大量的線程競爭同一批鎖,它們還是會(huì)重復(fù)地死鎖(注:原因同超時(shí)類似,不能從根本上減輕競爭)。
3.一個(gè)更好的方案是給這些線程設(shè)置優(yōu)先級(jí),讓一個(gè)(或幾個(gè))線程回退,剩下的線程就像沒發(fā)生死鎖一樣繼續(xù)保持著它們需要的鎖。如果賦予這些線程的優(yōu)先級(jí)是固定不變的,同一批線程總是會(huì)擁有更高的優(yōu)先級(jí)。為避免這個(gè)問題,可以在死鎖發(fā)生的時(shí)候設(shè)置隨機(jī)的優(yōu)先級(jí)。
2.什么是事務(wù),事務(wù)的特性,什么叫ACID。
??事務(wù):邏輯單元內(nèi)的一系列操作,要么全部完成執(zhí)行,要么全部不執(zhí)行。
事務(wù)的結(jié)果有兩種:當(dāng)事務(wù)中的所有步驟全部成功執(zhí)行完成時(shí),事務(wù)提交。如果其中一個(gè)步驟失敗,將發(fā)生回滾操作,撤消之前到事務(wù)開始時(shí)的所有操作。
事務(wù)管理是應(yīng)用系統(tǒng)開發(fā)中必不可少的一部分。Spring 為事務(wù)管理提供了豐富的功能支持。事務(wù)分為數(shù)據(jù)庫級(jí)別的事務(wù)和應(yīng)用程序級(jí)別的事務(wù),數(shù)據(jù)庫管理員處理的是數(shù)據(jù)庫級(jí)別的事務(wù),Java程序員處理的是應(yīng)用程序級(jí)別的事務(wù)。Spring 事務(wù)管理分為 編程式事務(wù)管理 和 聲明式事務(wù)管理 的兩種方式。
????事務(wù)的四大特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
- 原子性(A-Atomicity)??事務(wù)開始后所有操作,要么全部做完,要么全部不做,不可能停滯在中間環(huán)節(jié)。
- 一致性(C-Consistency)???事務(wù)開始前和結(jié)束后,數(shù)據(jù)庫的完整性約束沒有被破壞 。
- 持久性(I-Isolation)??事務(wù)完成后,事務(wù)對數(shù)據(jù)庫的所有更新將被保存到數(shù)據(jù)庫,不能回滾。
- 隔離性(D-Durability)???同一時(shí)間,只允許一個(gè)事務(wù)請求同一數(shù)據(jù),不同的事務(wù)之間彼此沒有任何干擾
3.Activiti和Shiro的作用
Shiro:?
??????用戶認(rèn)證 ?登錄 ??攔截器
?資源授權(quán) ???資源表示系統(tǒng)中所有的可訪問的菜單
Activiti:
??????解決多個(gè)任務(wù)人共同完成復(fù)雜的業(yè)務(wù)流。 他是一個(gè)業(yè)務(wù)框架
4.TCP和UDP協(xié)議的區(qū)別,什么是三次握手。
1.基于連接與無連接;
2.對系統(tǒng)資源的要求(TCP較多,UDP少);
3.UDP程序結(jié)構(gòu)較簡單;
4.流模式與數(shù)據(jù)報(bào)模式 ;
5.TCP保證數(shù)據(jù)正確性,UDP可能丟包,TCP保證數(shù)據(jù)順序,UDP不保證。
?所謂的“三次握手”:為了對每次發(fā)送的數(shù)據(jù)量進(jìn)行跟蹤與協(xié)商,確保數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確認(rèn)數(shù)據(jù)發(fā)送、接收完畢后何時(shí)撤消聯(lián)系,并建立虛連接。
為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之前,以特定的順序?qū)?shù)據(jù)包的序號(hào),并需要這些包傳送給目標(biāo)機(jī)之后的確認(rèn)消息。TCP總是用來發(fā)送大批量的數(shù)據(jù)。當(dāng)應(yīng)用程序在收到數(shù)據(jù)后要做出確認(rèn)時(shí)也要用到TCP。
5.多線程同步有幾種方法。
???多線程的實(shí)現(xiàn)方法有繼承Thread類,實(shí)現(xiàn)Runnable接口,實(shí)現(xiàn)Callable接口。
同步可以使用Synchronized關(guān)鍵字,也可以使用可重入鎖ReentrantLock,ThreadLocal同步機(jī)制也可以實(shí)現(xiàn)同步。
6.RPC服務(wù)和restful服務(wù)的區(qū)別(建議加深對rpc和restful的了解)
1、從本質(zhì)區(qū)別上看,RPC是基于TCP實(shí)現(xiàn)的,RESTFUL是基于HTTP來實(shí)現(xiàn)的。
2、從傳輸速度上來看,因?yàn)镠TTP封裝的數(shù)據(jù)量更多所以數(shù)據(jù)傳輸量更大,所以RPC的傳輸速度是比RESTFUL更快的。
3、因?yàn)镠TTP協(xié)議是各個(gè)框架都普遍支持的。在toC情況下,因?yàn)椴恢狼闆r來源的框架、數(shù)據(jù)形勢是什么樣的,所以在網(wǎng)關(guān)可以使用Restful利用http來接受。而在微服務(wù)內(nèi)部的各模塊之間因?yàn)楦鲄f(xié)議方案是公司內(nèi)部自己定的,所以知道各種數(shù)據(jù)方式,可以使用TCP傳輸以使各模塊之間的數(shù)據(jù)傳輸更快。所以可以網(wǎng)關(guān)和外界的數(shù)據(jù)傳輸使用RESTFUL,微服務(wù)內(nèi)部的各模塊之間使用RPC。
4、RESTFUL的API的設(shè)計(jì)上是面向資源的,對于同一資源的獲取、傳輸、修改可以使用GET、POST、PUT來對同一個(gè)URL進(jìn)行區(qū)別,而RPC通常把動(dòng)詞直接體現(xiàn)在URL上
- 編程題(每題10分,共30)
1.題目描述
查找最晚入職員工的所有信息,為了減輕入門難度,目前所有的數(shù)據(jù)里員工入職的日期都不是同一天(sqlite里面的注釋為--,mysql為comment)
| emp_no | birth_date | name | gender | hire_date |
| 10008 | 1958-02-19 | Kalloufi | M | 1994-09-15 |
求:
(1).創(chuàng)建如上employee表,設(shè)置emp_no為主鍵(2分)
?????CREATE TABLE `employee` ?(`emp_no` int(11) NOT NULL,`birth_date` date NULL DEFAULT NULL,`name` varchar(16) NOT NULL,`gender` varchar(16) NOT NULL,`hire_date` date NULL DEFAULT NULL,PRIMARY KEY (`emp_no`))(2)寫SQL語句插入5條數(shù)據(jù)(2分)
INSERT INTO employee VALUES (1008,'1958-02-19','Kalloufi','M','1994-09-15');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');INSERT INTO employee VALUES (VALUE,'VALUE','VALUE','VALUE','VALUE');(3)查找最晚入職員工的所有信息(3分)
SELECT *FROM employeeWHERE hire_date = (SELECT MAX(hire_date) FROM employee)(4)?將編號(hào)為1008的員工改名為Mally(3分)
UPDATE employee SET NAME='Mally' WHERE emp_no=10082.輸入某年某月某日,判斷這一天是這一年的第幾天?(10分)
??程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時(shí)需考慮多加一天。
??參考代碼:
??
import java.util.*;public class test {public static void main (String[]args){int day=0;int month=0;int year=0;int sum=0;int leap; ??System.out.print("請輸入年,月,日\n"); ??Scanner input = new Scanner(System.in);year=input.nextInt();month=input.nextInt();day=input.nextInt();switch(month) /*先計(jì)算某月以前月份的總天數(shù)*/ ?{ ??case 1:sum=0;break; ??case 2:sum=31;break; ??case 3:sum=59;break; ??case 4:sum=90;break; ??case 5:sum=120;break; ??case 6:sum=151;break; ??case 7:sum=181;break; ??case 8:sum=212;break; ??case 9:sum=243;break; ??case 10:sum=273;break; ??case 11:sum=304;break; ??case 12:sum=334;break; ??default:System.out.println("data error");break;} ??sum=sum+day; /*再加上某天的天數(shù)*/ ?if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/ ?leap=1; ??else ?leap=0; ??if(leap==1 && month>2)/*如果是閏年且月份大于2,總天數(shù)應(yīng)該加一天*/ ?sum++; ??System.out.println("It is the the day:"+sum);}}3.題目描述(本題知識(shí)點(diǎn):二分法,10分)
牛牛從小就有收集魔法卡的習(xí)慣,他最大的愿望就是能夠集齊 k 種不同種類的魔法卡,現(xiàn)在有 n 張魔法卡,這 n 張魔法卡存在于一維坐標(biāo)點(diǎn)上,
每張魔法卡可能屬于某一種類。牛牛如果想收集魔法卡就需要從當(dāng)前坐標(biāo)點(diǎn)跳躍到另外一個(gè)魔法卡所在的坐標(biāo)點(diǎn),花費(fèi)的代價(jià)是兩個(gè)跳躍坐標(biāo)點(diǎn)之間的距離差。
牛牛可以從任意的坐標(biāo)點(diǎn)出發(fā),牛牛想知道他集齊 k 種魔法卡所花費(fèi)的最小代價(jià)是多少,如果集不齊 k 種魔法卡,輸出-1。
第一行輸入兩個(gè)整數(shù) n,k, 分別表示魔法卡的個(gè)數(shù)和種類個(gè)數(shù)。
接下來有n行,每行兩個(gè)數(shù)x,y 分別表示屬于哪一種魔法卡和魔法卡所在的坐標(biāo)
示例1
輸入
7,3,[[0,1],[0,2],[1,5],[1,1],[0,7],[2,8],[1,3]]
輸出
3
說明
樣例一:牛牛從坐標(biāo)點(diǎn)5出發(fā),經(jīng)過7、8兩個(gè)點(diǎn)就收集了3張不同種類的魔法卡,達(dá)成成就。
所需代價(jià) (7-5)+(8-7) = 3
備注:
其中 1<=n<=10^6, 1<=k<=50
0<=x<k, 0<=y<=1e9
參考代碼:??
import java.util.*;public class Solution {/*** @param n int整型* @param k int整型* @param card int整型二維數(shù)組* @return int整型*/public static int solve (int n, int k, int[][] card) {if (card == null || n < k) return -1;int minDistance = -1;Arrays.sort(card,(o1, o2) -> o1[1] == o2[1] ? o1[0] - o2[0] : o1[1] - o2[1]);//Utils.print2DArray(card);HashMap<Integer,Integer> map = new HashMap<>();int right = -1,left = 0;while (right < card.length - 1) {right++;map.put(card[right][0],map.getOrDefault(card[right][0],0) + 1);//left去重while (map.get(card[left][0]) > 1) {map.put(card[left][0],map.get(card[left][0]) - 1);if (map.get(card[left][0]) == 0) {map.remove(card[left][0]);}left++;}if (map.size() == k) {//已經(jīng)湊齊int end = card[right][1],start = card[left][1];minDistance = minDistance == -1 ? end - start : Math.min(minDistance,end - start);}}return minDistance;}}總結(jié)
以上是生活随笔為你收集整理的java笔试题(题目+解析)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 换肤demo,轻量快捷接
- 下一篇: docker容器配置加速器