日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java笔试题(题目+解析)

發(fā)布時(shí)間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java笔试题(题目+解析) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

測試一

  • 選擇題(不定項(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=1008

2.輸入某年某月某日,判斷這一天是這一年的第幾天?(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。