久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Java程序員崗面試總結

 昵稱41735322 2017-04-07

1.分布式事務

事務就是一個會話過程中,對上下文的影響是一致的,,要么所有的更改都做了,,要么所有的更變都撤銷掉。就要么生,,要么死,。沒有半死不死的中間不可預期狀態(tài)。


事務是為了保障業(yè)務數(shù)據(jù)的完整性和準確性的,。


分布式事務,,常見的兩個處理辦法就是兩段式提交和補償。


兩段式提交典型的就是XA,,有個事務協(xié)調(diào)器,,告訴大家,來都準備好提交,,大家回復,,都準備好了,然后協(xié)調(diào)器告訴大家,,一起提交,,大家都提交了。


補償比較好理解,,先處理業(yè)務,,然后定時或者回調(diào)里,檢查狀態(tài)是不是一致的,,如果不一致采用某個策略,,強制狀態(tài)到某個結束狀態(tài)(一般是失敗狀態(tài)),,然后就世界太平了。典型的就是沖正操作,。


準備好了以后,,如果沒有問題,收到提交,,所有人都開始提交,。


這個時候,比如對數(shù)據(jù)庫來說,,有redo日志的,。


如果某個數(shù)據(jù)庫這時候宕機了,那么它重啟的時候,,先執(zhí)行檢查,,也會把上一次的這些操作都提交掉的。所以各個點的數(shù)據(jù)都是一致的,。


2.多線程

2.1 多線程編程的好處是什么?

在多線程程序中,,多個線程被并發(fā)的執(zhí)行以提高程序的效率,CPU不會因為某個線程需要等待資源而進入空閑狀態(tài),。


2.2我們?nèi)绾蝿?chuàng)建一個線程?

一是實現(xiàn)Runnable接口(好因為還可以繼承),,然后將它傳遞給Thread的構造函數(shù),創(chuàng)建一個Thread對象;二是直接繼承Thread類,。


Java 多線程并發(fā)編程會有許多不同的問題,,主要有如下問題的應用:

多線程讀寫共享數(shù)據(jù)同步問題

并發(fā)讀數(shù)據(jù),保持各個線程讀取到的數(shù)據(jù)一致性的問題,。


解決方案:

synchronized關鍵字和Lock并發(fā)鎖:主要解決多線程共享數(shù)據(jù)同步問題,。

ThreadLocal主要解決多線程中數(shù)據(jù)因并發(fā)產(chǎn)生不一致問題。


3.中間件

Java中間件技術主要就是EJB,,如果說服務器主要有tomcat,、weblogic、webshpere,,JBoss等,。


4.并發(fā)解決方案

基本的解決方案集中在這樣幾個環(huán)節(jié):使用高性能的服務器、高性能的數(shù)據(jù)庫,、高效率的編程語言,、還有高性能的Web容器。


f5負載均衡

redis


5.系統(tǒng)應用架構


6.JVM 內(nèi)存調(diào)優(yōu)

eclipse中:window-preferences-java-jre-jdk中 vm 參數(shù)

was中:中間件服務器-應用-進程定義-java虛擬機中 初始堆大小(1024M)最大堆大小(1536M)通用JVM參數(shù)-XX:MaxPermSize=256M


6.1.JVM內(nèi)存管理的機制

內(nèi)存空間劃分為:Sun JDK在實現(xiàn)時遵照JVM規(guī)范,,將內(nèi)存空間劃分為堆,、JVM方法棧、方法區(qū)、本地方法棧,、PC寄存器,。 配置-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M


堆: 堆用于存儲對象實例及數(shù)組值,可以認為Java中所有通過new創(chuàng)建的對象的內(nèi)存都在此分配,,Heap中對象所占用的內(nèi)存由GC進行回收,,在32位操作系統(tǒng)上最大為2GB,在64位操作系統(tǒng)上則沒有限制,,其大小可通過-Xms和-Xmx來控制,,-Xms為JVM啟動時申請的最小Heap內(nèi)存,默認為物理內(nèi)存的1/64但小于1GB;-Xmx為JVM可申請的最大Heap內(nèi)存,,默認為物理內(nèi)存的1/4但小于1GB,。


JVM方法棧: 為線程私有,其在內(nèi)存分配上非常高效,。當方法運行完畢時,,其對應的棧幀所占用的內(nèi)存也會自動釋放,。當JVM方法??臻g不足時,會拋出StackOverflowError的錯誤,,在Sun JDK中可以通過-Xss來指定其大小,。


方法區(qū): 要加載的類的信息(名稱、修飾符等),、類中的靜態(tài)變量,、類中定義為final類型的常量、類中的Field信息,、類中的方法信息,。方法區(qū)域也是全局共享的,在一定條件下它也會被GC,,當方法區(qū)域要使用的內(nèi)存超過其允許的大小時,,會拋出OutOfMemory的錯誤信息。在Sun JDK中這塊區(qū)域?qū)狿ermanet Generation,,又稱為持久代,,默認最小值為16MB,最大值為64MB,,可通過-XX:PermSize及-XX:MaxPermSize來指定最小值和最大值,。


PC寄存器: 占用的可能為CPU寄存器或操作系統(tǒng)內(nèi)存。


6.2.Java堆和棧的區(qū)別

Java把內(nèi)存劃分成兩種:一種是棧內(nèi)存,,一種是堆內(nèi)存,。

在函數(shù)中定義的一些基本類型的變量和對象的引用變量都在函數(shù)的棧內(nèi)存中分配。當在一段代碼塊定義一個變量時,Java就在棧中為這個變量分配內(nèi)存空間,,當超過變量的作用域后,,Java會自動釋放掉為該變量所分配的內(nèi)存空間,該內(nèi)存空間可以立即被另作他用,。


堆內(nèi)存用來存放由new創(chuàng)建的對象和數(shù)組,。在堆中分配的內(nèi)存,由Java虛擬機的自動垃圾回收器來管理,。在堆中產(chǎn)生了一個數(shù)組或?qū)ο蠛?,還可以在棧中定義一個特殊的變量,讓棧中這個變量的取值等于數(shù)組或?qū)ο笤诙褍?nèi)存中的首地址,,在棧中的這個特殊的變量就變成了數(shù)組或者對象的引用變量,,以后就可以在程序中使用棧內(nèi)存中的引用變量來訪問堆中的數(shù)組或者對象,引用變量相當于為數(shù)組或者對象起的一個別名,,或者代號,。


6.3.Java內(nèi)存泄露和內(nèi)存溢出

內(nèi)存泄漏:分配出去的內(nèi)存回收不了

內(nèi)存溢出:指系統(tǒng)內(nèi)存不夠用了


6.4.Java類加載機制

JVM將類加載過程劃分為三個步驟:裝載、鏈接和初始化,。


6.5.內(nèi)存回收


7.線程池

什么叫線程池,,線程池作用?什么是連接池,連接池作用?

線程池就是申請固定數(shù)目的線程,,放在某個空間中,。當申請線程時,就從線程池中取得,。當線程池中的線程都被占用的時候,,無法獲取到新的線程。通過ThreadPoolExecutor來創(chuàng)建一個線程池連接池是數(shù)據(jù)庫連接池,,跟線程池原理一樣,。目的都是一樣的,防止鏈接過多造成壓力,。


8.自己攻克的難題


9.性能調(diào)優(yōu)

9.1數(shù)據(jù)庫調(diào)整

9.1.1 sequence緩存的增加

9.1.2 增加日志大小與數(shù)量,,并且將日志文件與數(shù)據(jù)文件磁盤分離,減少io寫爭搶

9.1.3 調(diào)整緩沖池大小

9.1.4 打開數(shù)據(jù)庫的臟讀回寫


9.2was參數(shù)調(diào)整

9.2.1 線程池調(diào)整 服務器—所有服務器—dbank-provider—線程池—WebContainer 100并發(fā)50/300,300并發(fā)50/600;


9.2.2 JVM調(diào)整 服務器—所有服務器—dbank-provider—Java和進程管理—進程定義—Java虛擬機,,修改初始堆大小與最大堆大小(1024M/2048M) 通用JVM參數(shù)填入額外參數(shù)(-XX:MaxPermSize=256M);


9.2.3 JDBC連接池調(diào)整 資源—JDBC—數(shù)據(jù)源—dbank_ds—連接池屬性,,修改最小連接數(shù)與最大連接數(shù) 100并發(fā)10/300,300并發(fā)10/600;


9.2.4 系統(tǒng)日志大小及個數(shù) 故障診斷—日志和跟蹤—服務器名(如dbank-provider)—JVM日志

將SystemOut.log與SystemErr.log最大大小修改為200MB,歷史日志文件最大數(shù)為20個,。


9.2.5 修改數(shù)據(jù)庫隔離級別 資源—JDBC—數(shù)據(jù)源—dbank_ds—定制屬性—webSphereDefaultIsolationLevel(需翻頁)將默認級別4修改為2,。


9.2.6 修改應用日志緩存大小 修改應用中(直銷銀行、電子賬戶,、產(chǎn)品中心)日志配置文件logback.xml中的quenceSize從10240修改為1024,。


9.3添加索引


9.4代碼調(diào)優(yōu)


10.你說說你做的最好的項目?

要重點介紹到

①項目是做什么?

②用到那些技術?

③整個項目中最大的亮點是?核心部分

④遇到bug是怎么解決的?


例如: 我認為我做的最好的項目是電子賬戶系統(tǒng),,電子賬戶類似于支付寶,是**銀行直銷銀行的賬務支撐系統(tǒng),。分為賬戶管理,、記賬、對賬,、日終跑批,、報表統(tǒng)計等模塊。目前生產(chǎn)用戶數(shù)量在六七萬左右,。使用技術IFP(基于Spring)+Maven,,生產(chǎn)中配置兩臺應用服務器,使用F5負載均衡,,配置虛地址,,由F5分發(fā)到兩臺服務器。


你項目遇到bug?怎么查問題?

例如:首先遇到了bug,,會查詢?nèi)罩?,通過日志定位到某個類的行數(shù),判斷是否有代碼問題,。


你遇到了什么bug?你是怎么解決?


例如我自己項目中,,查詢量非常大。通過日志發(fā)現(xiàn)了堆內(nèi)存溢出,,最后通過優(yōu)化代碼,,減輕new和加大堆內(nèi)存。


數(shù)據(jù)源方式鎖表,,由于db2默認隔離級別4較高,改為2,。


批量扣劃時間超長導致規(guī)定時間沒有取到文件改為主動通知方式,。


連接數(shù)不夠調(diào)優(yōu)。


11.java的數(shù)據(jù)結構

java.util包中三個重要的接口及特點:List(列表),、Set(保證集合中元素唯一),、Map(維護多個key-value鍵值對,保證key唯一),。其不同子類的實現(xiàn)各有差異,,如是否同步(線程安全)、是否有序,。


12.java中常用的類,,包,接口

類:String Integer Long File Date Thread

包:

第一個包:java.lang包 該包提供了Java語言進行程序設計的基礎類,,它是默認導入的包,。該包里面的Runnable接口和Object,、Math、String,、StringBuffer,、System、Thread以及Throwable類需要重點掌握,,因為它們應用很廣,。


第二個包:java.util包 該包提供了包含集合框架、遺留的集合類,、事件模型,、日期和時間實施、國際化和各種實用工具類(字符串標記生成器,、隨機數(shù)生成器和位數(shù)組),。


第三個包:java.io包 該包通過文件系統(tǒng)、數(shù)據(jù)流和序列化提供系統(tǒng)的輸入與輸出,。


第四個包:java.sql包


第五個包:java.NET包


第六個包:java.math包;

接口:Comparable Collection Map List Runnable


13.https通訊原理:

Http傳輸數(shù)據(jù)不加密,,明文,通信端口80;而Https在數(shù)據(jù)通信之前需要客戶端,、服務器進行握手(身份認證),,建立連接后,傳輸數(shù)據(jù)經(jīng)過加密,,通信端口443,。


原理:1.客戶端發(fā)起HTTPS請求;2、服務端的配置;3,、傳送證書;4,、客戶端解析證書;5、傳送加密信息;6,、服務段解密信息;7,、傳輸加密后的信息;8、客戶端解密信息


14系統(tǒng)調(diào)優(yōu):

通常的性能瓶頸:cpu,,內(nèi)存,,io,帶寬

vmstat 全面的性能查看工具

netstat網(wǎng)絡相關查看工具

top 與進程相關的性能查看工具

iostatio性能查看工具

ps 進程查看工具

iftop 網(wǎng)絡帶寬查看工具

vi/find/awk/lsof/free編輯器/查找命令/文本過濾/查看進程打開文件進程情況/內(nèi)存查看

查看端口



熱門Java視頻教程搶先看.jpg

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多