成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java面試

gxyz / 2431人閱讀

摘要:解耦作用,線程的創(chuàng)建于執(zhí)行完全分開,方便維護。線程池是一種多線程處理形式,處理過程中將任務(wù)提交到線程池,任務(wù)的執(zhí)行交由線程池來管理。線程不安全就是不提供數(shù)據(jù)訪問保護,有可能出現(xiàn)多個線程先后更改數(shù)據(jù)造成所得到的數(shù)據(jù)是臟數(shù)據(jù)。

線程池

首先要明確為什么要使用線程池,使用線程池會帶來什么好處?

? 線程是稀缺資源,不能頻繁的創(chuàng)建。

? 應當將其放入一個池子中,可以給其他任務(wù)進行復用。

? 解耦作用,線程的創(chuàng)建于執(zhí)行完全分開,方便維護。

線程池是一種多線程處理形式,處理過程中將任務(wù)提交到線程池,任務(wù)的執(zhí)行交由線程池來管理。
如果每個請求都創(chuàng)建一個線程去處理,那么服務(wù)器的資源很快就會被耗盡,使用線程池可以減少創(chuàng)建和銷毀線程的次數(shù),每個工作線程都可以被重復利用,可執(zhí)行多個任務(wù)。

抽象類與接口區(qū)別

1.抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。

2.抽象類中可以有普通成員變量,接口中沒有普通成員變量!!!!!!!(注意重點在 普通 即 非靜態(tài) 和 變量!!!!)

3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有非抽象的普通方法。

悲觀鎖和樂觀鎖使用場景

樂觀鎖是在應用層加鎖,而悲觀鎖是在數(shù)據(jù)庫層加鎖(for update)

樂觀鎖顧名思義就是在操作時很樂觀,這數(shù)據(jù)只有我在用,我先盡管用,最后發(fā)現(xiàn)不行時就回滾。

悲觀鎖在操作時很悲觀,生怕數(shù)據(jù)被其他人更新掉,我就先將其先鎖住,讓別人用不了,我操作完成后再釋放掉。

悲觀鎖需要數(shù)據(jù)庫級別上的的實現(xiàn),程序中是做不到的,如果在長事務(wù)環(huán)境中,數(shù)據(jù)會一直被鎖住,導致并發(fā)性能大大地降低。

一般來說如果并發(fā)量很高的話,建議使用悲觀鎖,否則的話就使用樂觀鎖。

如果并發(fā)量很高時使用樂觀鎖的話,會導致很多的并發(fā)事務(wù)回滾、操作失敗。

總之,沖突幾率大用悲觀,小就用樂觀。

樂觀鎖不會發(fā)生并發(fā)搶占資源

在多用戶環(huán)境中,在同一時間可能會有多個用戶更新相同的記錄,這會產(chǎn)生沖突。這就是著名的并發(fā)性問題。

1.悲觀鎖:指的是對數(shù)據(jù)被外界(包括本系統(tǒng)當前的其他事務(wù),以及來自外部系統(tǒng)的事務(wù)處理)修改持保守態(tài)度,因此,在整個數(shù)據(jù)處理過程中,將數(shù)據(jù)處于鎖定狀態(tài)

2.樂觀鎖:假設(shè)不會發(fā)生并發(fā)沖突,只在提交操作時檢查是否違反數(shù)據(jù)完整性。樂觀鎖不能解決臟讀的問題。

線程安全就是多線程訪問時,采用了加鎖機制,當一個線程訪問該類的某個數(shù)據(jù)時,進行保護,其他線程不能進行訪問直到該線程讀取完,其他線程才可使用。不會出現(xiàn)數(shù)據(jù)不一致或者數(shù)據(jù)污染。

線程不安全就是不提供數(shù)據(jù)訪問保護,有可能出現(xiàn)多個線程先后更改數(shù)據(jù)造成所得到的數(shù)據(jù)是臟數(shù)據(jù)。

死鎖和臟數(shù)據(jù)就是典型的線程安全問題。

簡單來說,線程安全就是: 在多線程環(huán)境中,能永遠保證程序的正確性。

只有存在共享數(shù)據(jù)時才需要考慮線程安全問題。

多線程會引出很多難以避免的問題, 如死鎖,臟數(shù)據(jù),線程管理的額外開銷,等等。更大大增加了程序設(shè)計的復雜度。

在Java 8 中,如果一個桶中的元素個數(shù)超過 TREEIFY_THRESHOLD(默認是 8 ),就使用紅黑樹來替換鏈表

java內(nèi)存區(qū)域:

hashmap

key value
初始化容量 1左移4位16容量 2的4次方

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16

加載因子系數(shù)

1分成4等分0.25 0.25*3=0.75 在容量的3/4(0.75)的時候擴容

static final float DEFAULT_LOAD_FACTOR = 0.75f;

HashMap和Hashtable的區(qū)別

HashMap沒有考慮同步,是線程不安全的;Hashtable使用了synchronized關(guān)鍵字,是線程安全的

前者允許null作為key,后者不允許null作為key

從ConcurrentHashMap代碼中可以看出,它引入了一個“分段鎖”的概念,具體可以理解為把一個大的Map拆分成N個小的HashTable,根據(jù)key.hashCode()來決定把key放到哪個HashTable中。

在ConcurrentHashMap中,就是把Map分成了N個Segment,put和get的時候,都是現(xiàn)根據(jù)key.hashCode()算出放到哪個Segment中,ConcurrentHashMap中默認是把segments初始化為長度為16的數(shù)組。通過把整個Map分為N個Segment(類似HashTable),可以提供相同的線程安全,但是效率提升N倍,默認提升16倍。

HashMap的底層實現(xiàn)
Java8之前,其底層實現(xiàn)是數(shù)組+鏈表實現(xiàn),Java8使用了數(shù)組+鏈表+紅黑樹實現(xiàn)

ConcurrentHashMap的具體實現(xiàn)

1、該類包含兩個靜態(tài)內(nèi)部類HashEntry(節(jié)點)和Segment(桶);前者用來封裝映射表的鍵值對,后者用來充當鎖的角色

List有序 可以重復 set無序不可以重復

ArrayList的初始容量10 加載因子0.5

Vector的初始容量10 加載因子1

HashSet的初始容量為16,加載因子0.75

HashMap的初始容量為16,加載因子0.75 擴容增量:原容量的1倍

數(shù)據(jù)庫索引原理

索引原理必須清楚一種數(shù)據(jù)結(jié)構(gòu)「平衡樹」(非二叉),也就是b tree或者 b+ tree,重要的事情說三遍:“平衡樹,平衡樹,平衡樹”。當然, 有的數(shù)據(jù)庫也使用哈希桶作用索引的數(shù)據(jù)結(jié)構(gòu) , 然而, 主流的RDBMS都是把平衡樹當做數(shù)據(jù)表默認的索引數(shù)據(jù)結(jié)構(gòu)的。

線程和進程的區(qū)別
1、進程是一個“執(zhí)行中的程序”,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位;

2、線程是進程的一個實體,一個進程中擁有多個線程,線程之間共享地址空間和其它資源

volatile關(guān)鍵字

該關(guān)鍵字可以保證可見性不保證原子性

ThreadLocal關(guān)鍵字

當使用ThreadLocal維護變量時,其為每個使用該變量的線程提供獨立的變量副本,所以
每一個線程都可以獨立的改變自己的副本,而不影響其他線程對應的副本

線程池

java.util.concurrent.ThreadPoolExecutor類就是一個線程池。客戶端調(diào)用
ThreadPoolExecutor.submit(Runnabletask)提交任務(wù)

JVM劃分

1、方法區(qū):常量、靜態(tài)變量、即時編譯器

2、堆內(nèi)存:垃圾回收的主要場所

3、程序計數(shù)器

4、虛擬機棧(棧內(nèi)存):保存局部變量、基本數(shù)據(jù)類型變量以及堆內(nèi)存中某個對象的引用變量

5、本地方法棧

垃圾回收算法有哪些

1、引用計數(shù)

2、標記-清除 分兩個階段 第一階段從引用根節(jié)點開始標記所有被引用的對象,第二階段遍歷整個堆,把未標記的對象清除。

GC經(jīng)常發(fā)生的區(qū)域是堆區(qū),堆區(qū)還可以細分為新生代、老年代、

內(nèi)存溢出 內(nèi)存泄露是導致內(nèi)存溢出的原因之一

NIO和IO的主要區(qū)別

IO 面向流 阻塞IO

NIO 面向緩沖區(qū) 非阻塞IO 選擇器 選擇一個通道

雙親委派模型

(1).BootStrap ClassLoader:啟動類加載器,負責加載存放在%JAVA_HOME%lib目錄中的

(2).Extension ClassLoader:擴展類加載器,由sun.misc.Launcher$ExtClassLoader實現(xiàn),負責加載%JAVA_HOME%libext目錄中的

(3).Application ClassLoader:應用程序類加載器,由sun.misc.Launcher$AppClassLoader實現(xiàn),負責加載用戶類路徑classpath上所指定的類庫

Java8新特性

1、Lambda表達式允許我們將函數(shù)當成參數(shù)傳遞給某個方法

2、函數(shù)式接口@Functionallnterface來標明該接口是一個函數(shù)式接口

3、引入重復注解@Repeatable

4、接口中可以實現(xiàn)方法default方法

5、注解的使用場景拓寬

6、新的包java.time包

dubbo

Provider在容器里面進行啟動,啟動之后往服務(wù)中心進行服務(wù)一個注冊,然后Consume訂閱之前注冊過的服務(wù),如果服務(wù)發(fā)生改變注冊中心會通知Consume,Consume拿到訂閱關(guān)系之后就直接invoke調(diào)用Provider同時有個Monitor監(jiān)控他們的調(diào)用情況

會員中心調(diào)用訂單中心

訂單需要提供一個接口給會員調(diào)用

Consumer:192.168.0-.192/com.tl.IOrderService?application=UserCp

數(shù)據(jù)庫索引作用 底層數(shù)據(jù)結(jié)構(gòu) 為什么使用這種結(jié)構(gòu)

索引 是對數(shù)據(jù)庫表中一列或多列的值進行排序的一種結(jié)構(gòu),使用索引可快速訪問數(shù)據(jù)庫表中的特定信息

底層數(shù)據(jù)結(jié)構(gòu)B+樹

使用B+樹的原因:查找速度快,效率高,

聚集索引和非聚集索引根本區(qū)別

是表記錄的排列順序和與索引的排列順序是否一致

聚集索引表記錄的排列順序和索引的排列順序一致

非聚集索引制定了表中記錄的邏輯順序,但是記錄的物理和索引不一定一致

MyISAM和InnoDB的區(qū)別

MyISAM不支持事務(wù),InnoDB是事務(wù)類型的存儲引擎

MyISAM只支持表級鎖InnoDB支持行級鎖和表級鎖

MyISAM不支持外鍵InnoDB支持外鍵

MyISAM支持全文索引InnoDB不支持

MyISAM表不支持事務(wù)、不支持行級鎖、不支持外鍵

InnoDB表支持事務(wù)、支持行級鎖、支持外鍵

Spring 知識點

Spring 的 IOC 和 AOP

? IOC:控制反轉(zhuǎn),(解耦合)將對象間的依賴關(guān)系交給 Spring 容器,使用配置文件來創(chuàng)建所依賴的對象,由主動創(chuàng)建對象改為了被動方式;

? AOP:面向切面編程,將功能代碼從業(yè)務(wù)邏輯代碼中分離出來;

AOP 的實現(xiàn)方式有哪幾種?如何選擇?

JDK 動態(tài)代理實現(xiàn)和 cglib 實現(xiàn)

選擇:

如果目標對象實現(xiàn)了接口,默認情況下會采用 JDK 的動態(tài)代理實現(xiàn) AOP,也可以強制使用 cglib 實現(xiàn) AOP;

如果目標對象沒有實現(xiàn)接口,必須采用 cglib 庫,Spring 會自動在 JDK 動態(tài)代理和 cglib 之間轉(zhuǎn)換。

擴展:JDK 動態(tài)代理如何實現(xiàn)

JDK 動態(tài)代理,只能對實現(xiàn)了接口的類生成代理,而不是針對類,該目標類型實現(xiàn)的接口都將被代理。

原理是通過在運行期間創(chuàng)建一個接口的實現(xiàn)類來完成對目標對象的代理

Mybatis 知識點

關(guān)于 MyBatis 主要考察占位符#和 $ 的區(qū)別,區(qū)別如下:

符號將傳入的數(shù)據(jù)都當做一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號;

$ 符號將傳入的數(shù)據(jù)直接顯示生成 SQL 中;

符號存在預編譯的過程,對問號賦值,防止 SQL 注入;

$符號是直譯的方式,一般用在 order by ${列名}語句中;

能用#號就不要用 $ 符號

Linux常用命令

文件和目錄:

pwd 顯示當前目錄

ls 顯示當前目錄下的文件和目錄:

ls -F 可以區(qū)分文件和目錄;

ls -a 可以把隱藏文件和普通文件一起顯示出來;

ls -R 可以遞歸顯示子目錄中的文件和目錄;

ls -l 顯示長列表

ls -l test 過濾器,查看某個特定文件信息。可以只查看 test 文件的信息

處理文件方面的命令有:touch、cp、 In、mv、rm

處理目錄方面的命令:mkdir

查看文件內(nèi)容:file、cat、more、less、tail、head

eg. 找出進程名中包括 java 的所有進程:ps -ef | grep java

top 命令 實時監(jiān)測進程

壓縮數(shù)據(jù)

tar -xvf 文件名

tar -zxvf 文件名

tar -cvzf 文件名

結(jié)束進程:kill PID 或者 kill all

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/73218.html

相關(guān)文章

  • Android-Java面試

    摘要:好不容易在月號這天中午點左右接到了來自阿里的面試電話。這里會不斷收集和更新基礎(chǔ)相關(guān)的面試題,目前已收集題。面試重難點的和的打包過程多線程機制機制系統(tǒng)啟動過程,啟動過程等等掃清面試障礙最新面試經(jīng)驗分享,此為第一篇,開篇。 2016 年末,騰訊,百度,華為,搜狗和滴滴面試題匯總 2016 年未,騰訊,百度,華為,搜狗和滴滴面試題匯總 各大公司 Java 后端開發(fā)面試題總結(jié) 各大公司 Jav...

    TalkingData 評論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復實現(xiàn)故障恢復自動化詳解哨兵技術(shù)查漏補缺最易錯過的技術(shù)要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...

    BicycleWarrior 評論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應聘者的包裝程度語言和等其他語言的對比分析和主從復制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復實現(xiàn)故障恢復自動化詳解哨兵技術(shù)查漏補缺最易錯過的技術(shù)要點大掃盲意外宕機不難解決,但你真的懂數(shù)據(jù)恢復嗎每秒 作為面試官,我是如何甄別應聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復制的原理詳...

    tommego 評論0 收藏0
  • 求職準備 - 收藏集 - 掘金

    摘要:一基礎(chǔ)接口的意義百度規(guī)范擴展回調(diào)抽象類的意義想不想通過一線互聯(lián)網(wǎng)公司面試文檔整理為電子書掘金簡介谷歌求職記我花了八個月準備谷歌面試掘金原文鏈接翻譯者 【面試寶典】從對象深入分析 Java 中實例變量和類變量的區(qū)別 - 掘金原創(chuàng)文章,轉(zhuǎn)載請務(wù)必保留原出處為:http://www.54tianzhisheng.cn/... , 歡迎訪問我的站點,閱讀更多有深度的文章。 實例變量 和 類變量...

    cuieney 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<