{eval=Array;=+count(Array);}
肝了一個(gè)月的面試題終于來(lái)啦,大家開(kāi)心不。
2020年最新Java面試題整理,全網(wǎng)最全一份,包含各個(gè)技術(shù)棧,Java基礎(chǔ),Java集合,多線(xiàn)程,Java異常,spring,spring MVC,spring boot,spring cloud,netty,dubbo,activemq,Java web,jvm,kafka,MongoDB,mybatis,MySQL,Nginx,rabbitmq,Redis,Tomcat,zookeeper,設(shè)計(jì)模式,數(shù)據(jù)結(jié)構(gòu),算法,分布式,限流,降級(jí),cap原理等等知識(shí)點(diǎn)
話(huà)不多說(shuō),直接上圖
總共80多個(gè)PDF
【BAT必備】計(jì)算機(jī)網(wǎng)絡(luò)面試題:
鏈接:https://pan.baidu.com/s/1hFggmtdL1ZmE4utBlo8S1g 提取碼:qfkh
【BAT必備】設(shè)計(jì)模式面試題
鏈接:https://pan.baidu.com/s/1eXJveIVvQe-m3MdvLcT-fQ 提取碼:j0kx
【BAT必備】數(shù)據(jù)結(jié)構(gòu)算法面試題:
鏈接:https://pan.baidu.com/s/1daFN9jY03fXsqwc9LeKi2w 提取碼:5ab7
【BAT必備】多線(xiàn)程面試題:
鏈接:https://pan.baidu.com/s/1GdvsNESoHPBjWKN2h-iK7Q 提取碼:cqib
【BAT必備】并發(fā)編程鎖面試題:
鏈接:https://pan.baidu.com/s/1hXPPtMY2dvz-g7QcSTc3PA 提取碼:zhmy
【BAT必備】tomcat面試題:
鏈接:https://pan.baidu.com/s/1qPZXx4lmLynmaF0XjRTzpQ 提取碼:5m16
【BAT必備】zookeeper面試題:
鏈接:https://pan.baidu.com/s/1EhOee9e1Qe-Q6RC8KlthxA 提取碼:p2am
【BAT必備】spring 全家桶面試題:
鏈接:https://pan.baidu.com/s/1DXGO-N5P6QIGKLZ8LIVOuQ 提取碼:m9v7
【BAT必備】rocketMq面試題:
鏈接:https://pan.baidu.com/s/1TEF3yUR4OOaIpj-4ud_79A 提取碼:3g3d
【BAT必備】redis面試題:
鏈接:https://pan.baidu.com/s/1qlanxWBfwvKUObnHulCQiA 提取碼:rjo7
【BAT必備】rabbitMq面試題:
鏈接:https://pan.baidu.com/s/1ywLiq3IUJVyZosPLNrmyTA 提取碼:0td4
【BAT必備】netty面試題:
鏈接:https://pan.baidu.com/s/1Pbv4aelqOt1dUPA2SwEB_Q 提取碼:2w1e
【BAT必備】Nginx面試題:
鏈接:https://pan.baidu.com/s/1r8YNyOz0N6MJ9F0045lEZw 提取碼:49tl
【BAT必備】MySQL面試題:
鏈接:https://pan.baidu.com/s/1GeX6Fs4nNi6fTUHKxJ2SZw 提取碼:8pow
【BAT必備】mybatis面試題:
鏈接:https://pan.baidu.com/s/1xOYiaiQ2JpPt2jb6GdWjaA 提取碼:aqd3
【BAT必備】MongoDB面試題:
鏈接:https://pan.baidu.com/s/1QTVx1TF8tDn6LUJr7wdfOQ 提取碼:j1qt
【BAT必備】Linux面試題:
鏈接:https://pan.baidu.com/s/1veZ3dBJmz1PduCE5tl-e1A 提取碼:txpf
【BAT必備】kafka面試題:
鏈接:https://pan.baidu.com/s/1SWhiBCswleYGsDupSGzE6g 提取碼:o1gv
【BAT必備】jvm面試題:
鏈接:https://pan.baidu.com/s/1xi-QLq_I75kha439EGqELw 提取碼:kxde
【BAT必備】java web面試題:
鏈接:https://pan.baidu.com/s/1r3Bupn9qhJbw5ebR_6h94A 提取碼:qba4
【BAT必備】Java基礎(chǔ)面試題:
鏈接:https://pan.baidu.com/s/1J40nYKIoV_VMCumoRpIyhQ 提取碼:5xo7
【BAT必備】dubbo面試題:
鏈接:https://pan.baidu.com/s/10flnh7Tb0Oxd3yZPQOnjsA 提取碼:5gc9
【BAT必備】activeMQ面試題:
鏈接:https://pan.baidu.com/s/1igNB64dpMCjCQkRzvqCXpQ 提取碼:006a
【BAT必備】分布式相關(guān)面試題大全面試題:
鏈接:https://pan.baidu.com/s/1ZcpJDh07B2NPAL4_4VC6jQ 提取碼:w4mw
【BAT必備】java面試題大全:
鏈接:https://pan.baidu.com/s/11jw0Ua4CZiI8-S6EadM_iQ 提取碼:epmp
【BAT必備】Java面試匯總
鏈接:https://pan.baidu.com/s/1vG9_cNoiYBW5TY32S4wGnQ 提取碼:k087
【BAT必備】2020年多家公司整理的350道Java面試題手冊(cè)
鏈接:https://pan.baidu.com/s/1FEGQVTgiyKG0kCasYn-n2g 提取碼:f7y1
【BAT必備】Java全部核心知識(shí)點(diǎn)整理
鏈接:https://pan.baidu.com/s/1StG-ib70TDAE1Hb4NVLQRQ 提取碼:5rp1
2021大廠(chǎng)java面試題庫(kù):可能會(huì)有些多,建議你都自己整理答案,然后去面試,提取去高頻的再好好記記,我覺(jué)得能很快找到工作的。
Java 面試題有哪些?面試經(jīng)常會(huì)問(wèn)什么樣的問(wèn)題?互聯(lián)網(wǎng)大廠(chǎng)的面試題是怎么樣的呢?今天,我們就一起來(lái)聊一聊,關(guān)于 Java 相關(guān)的面試題。
關(guān)于 Java 相關(guān)的面試題,其實(shí)有很多,而且在 GitHub 上,有很多人整理了很多 Java 相關(guān)面試題,而且這些面試題里不僅配有答案,分析,很多面試題都包含了一些類(lèi)似于 BAT TMD 等大廠(chǎng)的面試題,看這些面試題,可以讓你充分了解大廠(chǎng)面試 Java 會(huì)經(jīng)常為什么樣的問(wèn)題。
所以,今天我就給大家推薦兩個(gè)關(guān)于 Java 面試的開(kāi)源項(xiàng)目。里面就包含了很多 Java 面試題,還有經(jīng)驗(yàn)分享。
這個(gè)開(kāi)源項(xiàng)目就是:JavaGuide ,它已經(jīng)有 6 萬(wàn)多人 star 了。號(hào)稱(chēng)是:【Java 學(xué)習(xí) + 面試指南】,一份涵蓋大部分 Java 程序員所需要掌握的核心知識(shí)。
來(lái)看一看包含了哪些核心知識(shí)吧!看圖:
上面是整個(gè)開(kāi)源項(xiàng)目的目錄,具體每個(gè)目錄下有什么呢?如下:
我在這里就不一一列舉了,比如,我們點(diǎn)擊其中一個(gè)鏈接,看看具體有哪些面試題呢?
是不是內(nèi)容很豐富呢?
這個(gè)開(kāi)源項(xiàng)目地址: https://github.com/Snailclimb/JavaGuide
這個(gè)開(kāi)源項(xiàng)目的名稱(chēng)就是:Java-Interview ,它起的名字更厲害,更唬人,就是:Java 面試必會(huì),直通 BAT 。對(duì),就是這么夸張,你看完之后,讓你直通 BAT 。
里面整合和整理了很多面試題。比如這樣:
再比如,具體內(nèi)容:
不僅有問(wèn)題,還帶有答案,也是整理很多 Java 相關(guān)的面試題。所以,建議大家在上面復(fù)習(xí)和學(xué)習(xí),去應(yīng)對(duì)面試,可以做到充分準(zhǔn)備。畢竟,我們不打無(wú)準(zhǔn)備之仗嘛。
所以,你可以在 GitHub 上去獲取,一搜,出來(lái)一堆。GitHub 對(duì)于程序員來(lái)講,絕對(duì)是個(gè)好地方。
怎么樣,經(jīng)過(guò)我這么一回答,是不是豁然開(kāi)朗了呢?如果感覺(jué)不錯(cuò),記得給個(gè)贊哦!
謝邀回答?。?!????????????
我認(rèn)為,Java面試試題眾多,重在對(duì)基礎(chǔ)理論知識(shí)和實(shí)際操作的考核,給你分享一些面試題目(由于篇幅有限,答案省略),主要有:
1. 什么是Spring MVC框架的控制器?
2.SpringMvc的控制器是不是單例模式,如果是,有什么問(wèn)題,怎么解決?
3.結(jié)合項(xiàng)目談?wù)勀銓?duì) MVC 的理解?
4.什么是Spring MVC?SpringMVC的工作流程是什么?
5.SpringMVC的優(yōu)點(diǎn)是什么?
6.SpringMVC與Struts2的區(qū)別?
7.Spring框架分為哪七大模塊,各模塊的主要功能作用是什么?
8.Spring框架中的三大核心思想是什么?
9.AOP的概念以及使用AOP機(jī)制有什么好處?
10.Java編程中實(shí)現(xiàn)AOP有幾種方式?
11.jsp靜態(tài)包含和動(dòng)態(tài)包含的區(qū)別?
12.jsp有哪些內(nèi)置對(duì)象?作用分別是什么?
13.Tomcat 有哪幾種Connector 運(yùn)行模式?
14.你所知道的集合類(lèi)都有哪些?主要方法?
15.說(shuō)出ArrayList、Vector、LinkedList 的存儲(chǔ)性能和特性?
16.Collection 和Collections 的區(qū)別?
17.HashMap 和Hashtable 的區(qū)別?
18.Arraylist 與Vector 區(qū)別?
19.Set 里的元素是不能重復(fù)的,那么用什么方法來(lái)區(qū)分重復(fù)與否呢?
20.介紹JAVA中的Collection FrameWork?如何寫(xiě)自己的數(shù)據(jù)結(jié)構(gòu)?
21.EJB與JAVA BEAN的區(qū)別是什么?
22.請(qǐng)你介紹EJB的基本架構(gòu)?等等。
以上題目是我分享的一點(diǎn)點(diǎn)建議,希望能對(duì)你有所幫助和啟發(fā),也希望與你相互學(xué)習(xí)、共同進(jìn)步?。?!
我也是一直做java開(kāi)發(fā)很多年啦,經(jīng)歷過(guò)的面試很多了,大公司小公司都待過(guò),給你一些建議吧。
java面試題面還是很廣的,下面給你分類(lèi)整理下來(lái)的。
1、java基礎(chǔ)知識(shí)。比如面向?qū)ο蟮奶卣?、多態(tài)、訪(fǎng)問(wèn)修飾符范圍、static和final關(guān)鍵字、抽象類(lèi)與接口、深拷貝與淺拷貝、序列化與反序列化、幾種數(shù)據(jù)結(jié)構(gòu)、拆箱與裝箱
2、java集合相關(guān)的。比如集合框架理解、list、set、hashmap底層實(shí)現(xiàn)以及區(qū)別?hashmap底層原理,put和get方法怎么實(shí)現(xiàn)的?hashmap與hashTable區(qū)別?concurrentHashMap底層實(shí)現(xiàn)?
3、java異常處理。異常分類(lèi)?編譯時(shí)異常與運(yùn)行時(shí)異常區(qū)別?舉例子有哪些運(yùn)行時(shí)異常?
4、jvm內(nèi)存模型。以及GC垃圾回收機(jī)智和算法。
5、spring相關(guān)。解釋IOC和AOP,以及他們的原理。bean生命周期
6、mysql。索引是什么?索引分類(lèi)?索引優(yōu)化?
7、mybaits相關(guān)。動(dòng)態(tài)標(biāo)簽,字符串替換,防注入。
8、dubbo。dubbo服務(wù)注冊(cè)與發(fā)現(xiàn)。服務(wù)負(fù)載均衡算法,dubbo配置與使用。
9、多線(xiàn)程。synchronized用法與底層原理,與lock的區(qū)別?線(xiàn)程池有哪些?線(xiàn)程池有哪些參數(shù)?線(xiàn)程池優(yōu)化?
10、redis。redis數(shù)據(jù)類(lèi)型有哪些,每個(gè)類(lèi)型的使用場(chǎng)景?redis為什么這么快?redis怎么保證高可用?redis怎么保證與數(shù)據(jù)庫(kù)數(shù)據(jù)一致?
11、消息隊(duì)列。activeMQ、rabbitMQ、rocketMQ、kafka,都可以了解下,以及怎么保證高可用和處理高并發(fā)。
12、排序算法與數(shù)據(jù)結(jié)構(gòu)。冒泡排序、快速排序、選擇排序、插入排序等等
大概就有這么個(gè)方面的,好好準(zhǔn)備還是有很多機(jī)會(huì)的。
我主要做java 開(kāi)發(fā)的,大家有什么其他問(wèn)題可以關(guān)注我給我私信,或者繼續(xù)在評(píng)論區(qū)和我溝通,我有java高級(jí)分布式高并發(fā)消息隊(duì)列面試視頻可以分享,大家一起進(jìn)步
互聯(lián)網(wǎng)高級(jí)java高并發(fā)分布式消息隊(duì)列面試視頻在蜻蜓FM,搜索“淺戲互聯(lián)網(wǎng)”,喜歡的朋友可以關(guān)注一下,謝謝。
謝邀。一般關(guān)于面試的java框架都是根據(jù)你簡(jiǎn)歷中之前項(xiàng)目用到的框架來(lái)問(wèn)。題主沒(méi)有問(wèn)到具體的框架,我就談?wù)勀壳肮菊衅敢笞疃?,也是公司用的最多的三個(gè)框架SSM。
關(guān)于Spring:
1.談?wù)勀銓?duì)Spring IOC和DI的理解,它們有什么區(qū)別?
2.Spring配置bean實(shí)例化有哪些方式?
3.請(qǐng)介紹一下Spring框架中Bean的生命周期和作用域
4.Bean注入屬性有哪幾種方式?
5.什么是AOP,AOP的作用是什么?
6.Spring如何處理線(xiàn)程并發(fā)問(wèn)題?
7.介紹一下Spring的事物管理
關(guān)于SpringMVC:
1.什么是SpringMVC ?簡(jiǎn)單介紹下你對(duì)SpringMVC的理解?
2.說(shuō)說(shuō)SpringMVC的流程?
3.SpringMVC有什么優(yōu)點(diǎn)?
4.SpringMVC怎么樣設(shè)定重定向和轉(zhuǎn)發(fā)的?
5.如何解決POST請(qǐng)求中文亂碼問(wèn)題,GET的又如何處理呢?
6.Spring MVC的異常處理 ?
7.SpringMvc的核心入口類(lèi)是什么?
8.SpringMvc的控制器是不是單例模式,如果是,有什么問(wèn)題,怎么解決?
9. @RequestMapping注解用在類(lèi)上面有什么作用?
10.如果前臺(tái)有很多個(gè)參數(shù)傳入,并且這些參數(shù)都是一個(gè)對(duì)象的,那么怎么樣快速得到這個(gè)對(duì)象?
11.SpringMvc如何處理視圖?
關(guān)于Mybatis:
1.#{}和${}的區(qū)別是什么?
2.當(dāng)實(shí)體類(lèi)中的屬性名和表中的字段名不一樣 ,怎么辦?
3.聊聊你對(duì)Mybatis的了解和認(rèn)識(shí)?
4. Mybatis工作原理
5.Mapper.xml映射文件中有哪些常用標(biāo)簽?
6.Mybatis是如何進(jìn)行分頁(yè)的?分頁(yè)插件的原理是什么?
7.Mybatis動(dòng)態(tài)sql是做什么的?都有哪些動(dòng)態(tài)sql?簡(jiǎn)述一下動(dòng)態(tài)sql的執(zhí)行原理?
8.Mybatis是如何將sql執(zhí)行結(jié)果封裝為目標(biāo)對(duì)象并返回的?都有哪些映射形式?
以上題目是我分享的一點(diǎn)點(diǎn)建議,希望能對(duì)你有所幫助。有興趣還可以關(guān)注我,定期分享技術(shù)干貨,在程序員進(jìn)階的路上一起學(xué)習(xí)成長(zhǎng)。
指對(duì)象一旦被創(chuàng)建狀態(tài)不能再改變。任何修改都會(huì)創(chuàng)建一個(gè)新的對(duì)象,如 String、Integer及其它包裝類(lèi)。
可以。不要共享可變對(duì)象的引用就可以了,如果需要變化就返回原對(duì)象的一個(gè)拷貝。最常見(jiàn)的例子是對(duì)象中包含一個(gè)日期對(duì)象的引用.
前2者都需要顯式地調(diào)用構(gòu)造方法. 造成耦合性最高的恰好是第一種,因此你發(fā)現(xiàn)無(wú)論什么框架,只要涉及到解耦必先減少new的使用.
在idk 1.7之前,switch只能支持byte,short,char,int或者其對(duì)應(yīng)的封裝類(lèi)以及Enum類(lèi)型。從idk 1.7之后switch開(kāi)始支持String.
clone(), equals(), hashCode(), toString(), notify(), notifyAll(), wait(), finalize(), getClass()
HashMap的底層實(shí)現(xiàn)是“基于拉鏈法的散列表”。
不是。Java中的基本數(shù)據(jù)類(lèi)型只有8個(gè):byte、short、int、long、float、double、char、boolean;除了基本類(lèi)型(primitive type)和枚舉類(lèi)型(enumeration type),剩下的都是引用類(lèi)型(reference type)。
不正確。3.4是雙精度數(shù),將雙精度型(double)賦值給浮點(diǎn)型(float)屬于下轉(zhuǎn)型(down-casting,也稱(chēng)為窄化)會(huì)造成精度損失,因此需要強(qiáng)制類(lèi)型轉(zhuǎn)換float f =(float)3.4; 或者寫(xiě)成float f =3.4F;。
goto 是Java中的保留字,在目前版本的Java中沒(méi)有使用?!禩he Java Programming Language》附錄中有g(shù)oto和const,但這兩個(gè)是目前無(wú)法使用的關(guān)鍵字,因此有些地方將其稱(chēng)之為保留字,其實(shí)保留字這個(gè)詞應(yīng)該有更廣泛的意義,因?yàn)槭煜語(yǔ)言的程序員都知道,在系統(tǒng)類(lèi)庫(kù)中使用過(guò)的有特殊意義的單詞或單詞的組合都被視為保留字。
1.0相比1.1可以一次傳輸多個(gè)文件,各類(lèi)瀏覽器大概都支持3~5個(gè)請(qǐng)求同時(shí)發(fā)送。
http2.0主要是二進(jìn)制的格式替代了原來(lái)的文本,增加了多路復(fù)用和首部壓縮解決了head of line blocking,另外還有server pushing等新特性。
協(xié)議的東西還是建議看一看官網(wǎng)的說(shuō)明。
此題其實(shí)是問(wèn)瀏覽器緩存對(duì)于HTTP Method中Get和Post的請(qǐng)求是否支持,答案是不支持Post Method。Get可以被瀏覽器緩存。
允許不同類(lèi)對(duì)象對(duì)同一消息做出響應(yīng),主要優(yōu)點(diǎn):
動(dòng)態(tài)綁定技術(shù)(dynamic binding),執(zhí)行期間判斷所引用對(duì)象的實(shí)際類(lèi)型,根據(jù)實(shí)際類(lèi)型調(diào)用對(duì)應(yīng)的方法.
接口的意義用三個(gè)詞就可以概括:規(guī)范,擴(kuò)展,回調(diào).
不能。子類(lèi)繼承父類(lèi)后,有相同的靜態(tài)方法和非靜態(tài),這是非靜態(tài)方法覆蓋父類(lèi)中的方法,父類(lèi)的該靜態(tài)方法被隱藏,另外子類(lèi)可集成父類(lèi)的靜態(tài)與非靜態(tài)方法,至于方法重載我覺(jué)得它其中一要素就是在同一類(lèi)中,不能說(shuō)父類(lèi)中的什么方法與子類(lèi)里的什么方法是方法重載的體現(xiàn)。
以上19道java經(jīng)典面試題。
為幫助那些往想互聯(lián)網(wǎng)方向轉(zhuǎn)行想學(xué)習(xí),卻因?yàn)闀r(shí)間不夠,資源不足而放棄的人。我搜集整理了一套完整的IT學(xué)習(xí)資料,包括運(yùn)營(yíng)技巧、SEO優(yōu)化等,比自己在網(wǎng)上零散收集的結(jié)構(gòu)性和連貫性更強(qiáng),只為幫助那些想學(xué)習(xí)的人!需要的同學(xué)可私信!私信!回復(fù)“資料”
SpringMVC
Spring
Mybatis
Hibernate
SpringBoot
Nginx
其他
Thymeleaf、freemarker等模板引擎
NoSQL:Redis、Memcache和MongoDB等的區(qū)別、使用
xml解析(DOM解析、SAX解析、JDOM解析、DOM4J解析)
POI實(shí)現(xiàn)Microsoft Office格式檔案讀和寫(xiě)的功能
多線(xiàn)程、線(xiàn)程池的原理及實(shí)現(xiàn)
設(shè)計(jì)模式
Kafka、MQ等消息機(jī)制
Sql優(yōu)化
jvm原理
常用搜索引擎Elasticsearch等
扎實(shí)的java基礎(chǔ)
作為一家有著12年教學(xué)經(jīng)驗(yàn)且只專(zhuān)心教Java的培訓(xùn)機(jī)構(gòu),自然有很多高質(zhì)量的面試題:
131、j2ee中的應(yīng)用服務(wù)器有哪些?(ACD)
A. Weblogic
B. Tomcat
C. JBoss
D. WebSphere
E. IIS
EJB是sun的服務(wù)器端組件模型,最大的用處是部署分布式應(yīng)用程序當(dāng)然,還有許多方式可以實(shí)現(xiàn)分布式應(yīng)用,類(lèi)似微軟的.net技術(shù)。
憑借 java 跨平臺(tái)的優(yōu)勢(shì),用EJB 技術(shù)部署的分布式系統(tǒng)可以不限于特定的平臺(tái)。EJB(EnterpriseJavaBean)是J2EE的一部分,定義了一個(gè)用于開(kāi)發(fā)基于組件的企業(yè)多重應(yīng)用程序的標(biāo)準(zhǔn)。其特點(diǎn)包括網(wǎng)絡(luò)服務(wù)支持和核心開(kāi)發(fā)工具(SDK)。
在J2EE里,Enterprise Java Beans(EJB)稱(chēng)為Java企業(yè)Bean,是Java 的核心代碼,分別是會(huì)話(huà) Bean(Session Bean),實(shí)體 Bean(Entity Bean)和消息驅(qū)動(dòng) Bean(MessageDriven Bean)。
簡(jiǎn)單來(lái)講:比如做一個(gè)工程就和蓋房子,如果,你會(huì) java,那么你就擁有了基本的技能,一步一步累磚,總能把房子蓋好但是EJB就是一個(gè)框架,蓋房子的時(shí)候,先有這個(gè)框架,然后你根據(jù)這個(gè)框架去累磚,房子就會(huì)蓋的又快又好。java是基礎(chǔ),EJB 是在java上發(fā)展出來(lái)的模型,框架。
服務(wù)器集群就是指將很多服務(wù)器集中起來(lái)一起進(jìn)行同一種服務(wù),在客戶(hù)端看來(lái)就象是只有一個(gè)服務(wù)器。集群可以利用多個(gè)計(jì)算機(jī)進(jìn)行并行計(jì)算從而獲得很高的計(jì)算速度,也可以用多個(gè)計(jì)算機(jī)做備份,從而使得任何一個(gè)機(jī)器壞了整個(gè)系統(tǒng)還是能正常運(yùn)行。一旦在服務(wù)器上安裝并運(yùn)行了群集服務(wù),該服務(wù)器即可加入群集。群集化操作可以減少單點(diǎn)故障數(shù)量,并且實(shí)現(xiàn)了群集化資源的高可用性。
public class Test {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("a");
list.add("a");
list.add("b");
list.add("b");
list.add("c");
System.out.println("沒(méi)有去重前的數(shù)據(jù)為>>>" + list.toString());
for (int i = 0; i < list.size() - 1; i++) {
for (int j = list.size() - 1; j > i; j--) {
if (list.get(j).equals(list.get(i))) {
list.remove(j);
}
}
}
System.out.println("去重后的數(shù)據(jù)為>>>" + list.toString());
}
}
135、利用 java 面向?qū)ο蟮乃悸吩O(shè)計(jì)正方形、長(zhǎng)方形、圓的計(jì)算面積的類(lèi)圓:
class MianJi {
float r;
float pai = (float) 3.14;
void gongShi() {
Float s = pai * r * r;
System.out.println("圓的面積為" + s);
}
void zhengFangXing(float bianChang) {
System.out.println("正方形的面積為" + bianChang * bianChang);
}
void changFangXing(float chang, float kuan) {
System.out.println("長(zhǎng)方形的面積為" + chang * kuan);
}
public static void main(String[] arg) {
MianJi c = new MianJi();
System.out.println("請(qǐng)輸入圓的半徑:");
Scanner sc = new Scanner(System.in);
c.r = sc.nextFloat(); c.gongShi();
System.out.println("請(qǐng)輸入正方形的邊長(zhǎng):");
float bian = sc.nextFloat();
c.zhengFangXing(bian);
System.out.println("請(qǐng)輸入長(zhǎng)方形的長(zhǎng)和寬:");
float chang = sc.nextFloat();
float kuan = sc.nextFloat();
c.changFangXing(chang, kuan);
}
}
136、任何>=6的偶數(shù)都可以分解為兩個(gè)質(zhì)數(shù)之和,從鍵盤(pán)輸入一個(gè)偶數(shù),輸出其分解的質(zhì)數(shù)
public class Test { public static void main(String[] args) { int num = inPut(); outPut(num); } public static int inPut() { Scanner sc = new Scanner(System.in); System.out.println("請(qǐng)輸入大于 6 的偶數(shù):"); int num = sc.nextInt(); if (num % 2 != 0 || num <= 6) { System.out.println("輸入錯(cuò)誤,請(qǐng)重新輸入大于 6 的偶數(shù):"); return inPut(); } return num; } public static boolean isPrim(int num) { for (int i = 2; i <= Math.sqrt((double) num); i++) { if (num % i == 0) { return false; } } return true; } public static void outPut(int num) { for (int i = 2; i <= num / 2; i++) { if (isPrim(i) == true && isPrim(num - i) == true) { System.out.println(i + " " + (num - i)); } } } }
137、什么叫對(duì)象?什么叫類(lèi)?什么是面向?qū)ο螅∣OP)?
類(lèi)的概念:類(lèi)是具有相同屬性和行為的一組對(duì)象的集合。它為屬于該類(lèi)的所有對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個(gè)主要部分。在面向?qū)ο蟮木幊陶Z(yǔ)言中,類(lèi)是一個(gè)獨(dú)立的程序單位,它應(yīng)該有一個(gè)類(lèi)名并包括屬性說(shuō)明和服務(wù)說(shuō)明兩個(gè)主要部分。
對(duì)象的概念:對(duì)象是系統(tǒng)中用來(lái)描述客觀(guān)事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成。從更抽象的角度來(lái)說(shuō),對(duì)象是問(wèn)題域或?qū)崿F(xiàn)域中某些事物的一個(gè)抽象,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用;它是一組屬性和有權(quán)對(duì)這些屬性進(jìn)行操作的一組服務(wù)的封裝體??陀^(guān)世界是由對(duì)象和對(duì)象之間的聯(lián)系組成的。
類(lèi)與對(duì)象的關(guān)系就如模具和鑄件的關(guān)系,類(lèi)的實(shí)例化結(jié)果就是對(duì)象,而對(duì)一類(lèi)對(duì)象的抽象就是類(lèi)。類(lèi)描述了一組有相同特性(屬性)和相同行為(方法)的對(duì)象。
上面大概就是它們的定義吧,也許你是剛接觸面象對(duì)象的朋友,不要被概念的東西搞暈了, 給你舉個(gè)列子吧,如果你去中關(guān)村想買(mǎi)幾臺(tái)組裝的PC機(jī),到了那里你第一步要干什么,是不是裝機(jī)的工程師和你坐在一起,按你提供的信息和你一起完成一個(gè)裝機(jī)的配置單呀,這個(gè)配置單就可以想像成是類(lèi),它就是一張紙,但是它上面記錄了你要買(mǎi)的PC機(jī)的信息,如果用這個(gè)配置單買(mǎi)10臺(tái)機(jī)器,那么這10臺(tái)機(jī)子,都是按這個(gè)配置單組成的,所以說(shuō)這10臺(tái)機(jī)子是一個(gè)類(lèi)型的,也可以說(shuō)是一類(lèi)的。那么什么是對(duì)象呢,類(lèi)的實(shí)例化結(jié)果就是對(duì)象,用這個(gè)配置單配置出來(lái)(實(shí)例化出來(lái))的機(jī)子就是對(duì)象,是我們可以操作的實(shí)體,10 臺(tái)機(jī)子,10 個(gè)對(duì)象。每臺(tái)機(jī)子都是獨(dú)立的,只能說(shuō)明他們是同一類(lèi)的,對(duì)其中一個(gè)機(jī)(對(duì)象)做任何動(dòng)作都不會(huì)影響其它9臺(tái)機(jī)器,但是我對(duì)類(lèi)修改,也就是在這個(gè)配置單上加一個(gè)或少一個(gè)配件,那么裝出來(lái)的9個(gè)機(jī)子都改變了,這是類(lèi)和對(duì)象的關(guān)系(類(lèi)的實(shí)例化結(jié)果就是對(duì)象)
● 修飾類(lèi)
當(dāng)用final修飾一個(gè)類(lèi)時(shí),表明這個(gè)類(lèi)不能被繼承。也就是說(shuō),如果一個(gè)類(lèi)你永遠(yuǎn)不會(huì)讓他被繼承,就可以用final進(jìn)行修飾。final類(lèi)中的成員變量可以根據(jù)需要設(shè)為final,但是要注意 final 類(lèi)中的所有成員方法都會(huì)被隱式地指定為final 方法。在使用 final 修飾類(lèi)的時(shí)候,要注意謹(jǐn)慎選擇,除非這個(gè)類(lèi)真的在以后不會(huì)用來(lái)繼承或者出于安全的考慮,盡量不要將類(lèi)設(shè)計(jì)為 final類(lèi)。
● 修飾方法
被final修飾的方法將不能被子類(lèi)覆蓋,主要用于:
把方法鎖定,以防任何繼承類(lèi)修改它的含義。
在早期的Java實(shí)現(xiàn)版本中,會(huì)將final方法轉(zhuǎn)為內(nèi)嵌調(diào)用,所以效率能夠提升。
● 修飾變量
對(duì)于一個(gè)final變量,如果是基本數(shù)據(jù)類(lèi)型的變量,則其數(shù)值一旦在初始化之后便不能更改;如果是引用類(lèi)型的變量,則在對(duì)其初始化之后便不能再讓其指向另一個(gè)對(duì)象。當(dāng)用 final 作用于類(lèi)的成員變量時(shí),成員變量(注意是類(lèi)的成員變量,局部變量只需要保證在使用之前被初始化賦值即可)必須在定義時(shí)或者構(gòu)造器中進(jìn)行初始化賦值,而且final變量一旦被初始化賦值之后,就不能再被賦值了。
● java.lang.*
提供利用Java編程語(yǔ)言進(jìn)行程序設(shè)計(jì)的基礎(chǔ)類(lèi)。最重要的類(lèi)是Object(它是類(lèi)層次結(jié)構(gòu)的根)和Class(它的實(shí)例表示正在運(yùn)行的應(yīng)用程序中的類(lèi))。
● java.util.*
包含集合框架、遺留的Collection類(lèi)、事件模型、日期和時(shí)間設(shè)施、國(guó)際化和各種實(shí)用工具類(lèi)(字符串標(biāo)記生成器、隨機(jī)數(shù)生成器和位數(shù)組、日期 Date 類(lèi)、堆棧 Stack 類(lèi)、向量 Vector 類(lèi)等)。集合類(lèi)、時(shí)間處理模式、日期時(shí)間工具等各類(lèi)常用工具包。
● java.io.*
Java 的核心庫(kù)java.io提供了全面的IO接口。包括:文件讀寫(xiě)、標(biāo)準(zhǔn)設(shè)備輸出等。Java 中 IO是以流為基礎(chǔ)進(jìn)行輸入輸出的,所有數(shù)據(jù)被串行化寫(xiě)入輸出流,或者從輸入流讀入。
● java.net.*
并非所有系統(tǒng)都支持 IPv6 協(xié)議,而當(dāng) Java 網(wǎng)絡(luò)連接堆棧嘗試檢測(cè)它并在可用時(shí)透明地使用它時(shí),還可以利用系統(tǒng)屬性禁用它。在IPv6不可用或被顯式禁用的情況下,Inet6Address 對(duì)大多數(shù)網(wǎng)絡(luò)連接操作都不再是有效參數(shù)。雖然可以保證在查找主機(jī)名時(shí) java.net.InetAddress.getByName之類(lèi)的方法不返回Inet6Address,但仍然可能通過(guò)傳遞字面值來(lái)創(chuàng)建此類(lèi)對(duì)象。在此情況下,大多數(shù)方法在使用 Inet6Address 調(diào)用時(shí)都將拋出異常。
● java.sql.*
提供使用JavaTM編程語(yǔ)言訪(fǎng)問(wèn)并處理存儲(chǔ)在數(shù)據(jù)源(通常是一個(gè)關(guān)系數(shù)據(jù)庫(kù))中的數(shù)據(jù)的API。此API包括一個(gè)框架,憑借此框架可以動(dòng)態(tài)地安裝不同驅(qū)動(dòng)程序來(lái)訪(fǎng)問(wèn)不同數(shù)據(jù)源。
重載需要滿(mǎn)足的條件:在同一類(lèi)中定義的方法,方法名必須相同,參數(shù)一定不同。
發(fā)生覆蓋的條件:“三同一不低”,子類(lèi)和父類(lèi)的方法名稱(chēng),參數(shù)列表,返回類(lèi)型必須完全相同,而且子類(lèi)方法的訪(fǎng)問(wèn)修飾符的權(quán)限不能比父類(lèi)低。子類(lèi)方法不能拋出比父類(lèi)方法更多的異常。即子類(lèi)方法所拋出的異常必須和父類(lèi)方法所拋出的異常一致,或者是其子類(lèi),或者什么也不拋出;被覆蓋的方法不能是final類(lèi)型的。因?yàn)閒inal修飾的方法是無(wú)法覆蓋的。被覆蓋的方法不能為private。否則在其子類(lèi)中只是新定義了一個(gè)方法,并沒(méi)有對(duì)其進(jìn)行覆蓋。被覆蓋的方法不能為static。所以如果父類(lèi)中的方法為靜態(tài)的,而子類(lèi)中的方法不是靜態(tài)的,但是兩個(gè)方法除了這一點(diǎn)外其他都滿(mǎn)足覆蓋條件,那么會(huì)發(fā)生編譯錯(cuò)誤。反之亦然。即使父類(lèi)和子類(lèi)中的方法都是靜態(tài)的,并且滿(mǎn)足覆蓋條件,但是仍然不會(huì)發(fā)生覆蓋,因?yàn)殪o態(tài)方法是在編譯的時(shí)候把靜態(tài)方法和類(lèi)的引用類(lèi)型進(jìn)行匹配。
重寫(xiě)規(guī)則:重寫(xiě)方法不能比被重寫(xiě)方法限制有更嚴(yán)格的訪(fǎng)問(wèn)級(jí)別。(但是可以更廣泛,比如父類(lèi)方法是包訪(fǎng)問(wèn)權(quán)限,子類(lèi)的重寫(xiě)方法是public訪(fǎng)問(wèn)權(quán)限)。比如:Object類(lèi)有個(gè)toString()方法,開(kāi)始重寫(xiě)這個(gè)方法的時(shí)候我們總?cè)菀淄沺ublic修飾符,編譯器當(dāng)然不會(huì)放過(guò)任何教訓(xùn)我們的機(jī)會(huì)。出錯(cuò)的原因就是:沒(méi)有加任何訪(fǎng)問(wèn)修飾符的方法具有包訪(fǎng)問(wèn)權(quán)限,包訪(fǎng)問(wèn)權(quán)限比 public當(dāng)然要嚴(yán)格了,所以編譯器會(huì)報(bào)錯(cuò)的。參數(shù)列表必須與被重寫(xiě)方法相同。重寫(xiě)有個(gè)孿生的弟弟叫重載,也就是后面要出場(chǎng)的。如果子類(lèi)方法的參數(shù)與父類(lèi)對(duì)應(yīng)的方法不同,那么就是你認(rèn)錯(cuò)人了,那是重載,不是重寫(xiě)。返回類(lèi)型必須與被重寫(xiě)方法的返回類(lèi)型相同。
父類(lèi)方法A:void eat(){}子類(lèi)方法B:int eat(){}兩者雖然參數(shù)相同,可是返回類(lèi)型不同,所以不是重寫(xiě)。
父類(lèi)方法A:int eat(){} 子類(lèi)方法 B:long eat(){} 返回類(lèi)型雖然兼容父類(lèi),但是不同就是不同,所以不是重寫(xiě)。
我會(huì)定時(shí)更新一些Java題庫(kù),現(xiàn)在好多做大的都商業(yè)化了,而且網(wǎng)上的面試題庫(kù)有些太久了,不適合,我自己平時(shí)上下班地鐵上會(huì)寫(xiě)一些面試題,純粹也是為了讓自己總結(jié)一下,順便分享給大家,你可以關(guān)注看看。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答