Java基礎概念收集

Javaweb階段
 
Jsp有哪些內置對象?做用分別是什麼?
 
Page,pageContext,request,response,session,application,out,config,exception
Page指的是JSP被翻譯成Servlet的對象的引用.
pageContext對象能夠用來得到其餘8個內置對象,還能夠做爲JSP的域範圍對象使用.pageContext中存的值是當前的頁面的做用範圍》
request表明的是請求對象,能夠用於得到客戶機的信息,也能夠做爲域對象來使用,使用request保存的數據在一次請求範圍內有效。
Session表明的是一次會話,能夠用於保存用戶的私有的信息,也能夠做爲域對象使用,使用session保存的數據在一次會話範圍有效
Application:表明整個應用範圍,使用這個對象保存的數據在整個web應用中都有效。
Response是響應對象,表明的是從服務器向瀏覽器響應數據.
Out:JSPWriter是用於向頁面輸出內容的對象
Config:指的是ServletConfig用於JSP翻譯成Servlet後 得到Servlet的配置的對象.
Exception:在頁面中設置isErrorPage=」true」,便可使用,是Throwable的引用.用來得到頁面的錯誤信息。
 
什麼是cookie?Session和cookie有什麼區別?
Cookie是會話技術,將用戶的信息保存到瀏覽器的對象.
Session也是會話技術,將Session的信息保存到服務器的對象.Session是基於Cookie的 利用Cookie向瀏覽器回寫JSessionID.
 
 
 
 
JavaSe基礎知識
(1)進制:
 二進制: 以0b開頭
 八進制: 0-7組成,以0開頭.
 十進制: 默認.
 十六進制:由0-9,A-F(不區分大小寫)組成,以0x開頭
(2)靜態變量 成員變量 局部變量的區別
書寫位置
靜態 :類中方法外 加了一個關鍵字 static
成員: 類中方法外 沒有static
局部: 方法內
內存:
靜態:方法區裏面的靜態區
成員:堆
局部:棧
生命週期
靜態:隨着類的加載而加載 隨着類的消失而消失(虛擬機停掉纔會消失)
成員:隨着對象的建立而存在 隨着對象消失而消失(當一個對象沒有任何指向的時候 過一段時間垃圾回收器就會來清理)
局部:隨着方法的調用而存在 隨着方法的執行完畢而消失
初始化:
靜態:有默認初始化
成員:有默認初始化
局部:沒有了默認初始化 因此在使用以前必須先賦值 
(3)重載和重寫的區別:
重寫:發生在子父類中 子類出現和父類如出一轍的方法 纔是方法的重寫
子類重寫父類的方法
重載:發生在一個類中 只要知足  方法名相同  參數列表(順序  個數  類型)不一樣 與返回值無關的方法
就叫作他們之間構成相互重載
(4)構造方法:
建立對象時必定會執行.  沒有返回值 構造方法名必須和類名一致 能夠寫一個單獨的return;
(5)有參構造和Set方法的區別
有參構造方法,是在建立對象的同時 順便給成員變量進行賦值 ,強調的是建立對象
而set方法  就是爲了給成員變量賦值的一個方法
(6)static靜態
1:隨着類的加載而加載 隨着類的消失而消失(虛擬機停掉 纔會消失)
2:優先於對象而存在
3:被 包含靜態的這個類的全部對象 共享
4:不只能用對象名調用 還能用類名直接調用(推薦類名調用)
(7)權限修飾符的訪問權限:
private: 是爲本類準備的
默認:是爲同一個包下的類準備的
protected:是爲子類準備的 不管子類在任何地方
public: 爲全部類準備的
(8)final:關鍵字
final修飾的類:不能被繼承
final修飾的方法:不能被重寫
final修飾的變量是常量: 常量只能被賦值一次
(9)代碼塊:
局部代碼塊:
在方法內部{}
限定變量生命週期,及早釋放,提升內存利用率
構造代碼塊:
在方法外面 類裏面 {}
每建立一次對象 就執行一次 並且是在構造方法執行前執行的,因此說就能夠把構造方法裏面的共性內容寫到構造代碼塊裏面
靜態代碼塊:
在方法外面 類裏面 static{}
隨着類的加載而執行  只執行一次
作一些全局初始化的內容
(10)this和super的區別:
this表明當前對象的引用  不只能夠調用本類的 也能夠調用父類的(本類沒有的前提下才能調用父類的)
super表明的是父類內存空間的標識
 
(11)Object
Object:是一切類的超類或父類
Object的hashCode():返回該對象的哈希值(根據地址值算出的一個int數字)
不一樣對象的hashCode()值通常不一樣, 相同對象的hashCode值相同
Object的getClass():返回該對象的字節碼文件對象
Object的toString()
1):咱們在打印一個對象的時候,默認調用的對象的toString方法,若是該對象沒有重寫toString()那麼調用的
Object的toString()方法,由於繼承了Object嘛
2):Object的toString方法 返回   類的全路徑名稱 + @ + 16進制哈希值, 這樣返回通常沒有意義
3):因此咱們通常在編寫類的時候 都重寫Object的toString(),通常要求是把類裏面的屬性都顯示出來
Object的equals()
1):Object中equals方法的源碼
public boolean equals(Object obj){
  return (this == obj);
}
比較的引用類型的地址值,開發中 咱們調用equals方法是想比較對象裏面的屬性值
2):因此在編寫類的時候通常重寫Object中的equals方法,讓其比較對象的屬性值
 
== 和 equals 的區別? 
(1)==  比較的是 內存中的地址值  equals重寫以後比較的是屬性值,不然等價於 == .
(12)抽象類abstract:
特色:
1)抽象類裏面能夠沒有抽象方法,可是有抽象方法的類必須得是抽象類
2)抽象類不能被實例化
3)普通子類繼承抽象類,必須所有重寫抽象類裏面的抽象方法,要不子類也是抽象類
 
(13)el表達式: 爲了讓jsp寫起來更加簡單。
${ }
 
***(14)poi 導出電子表格
 
(15)JDBC的優勢:
            直接底層操做,提供了很簡單、便捷的訪問數據庫的方法,跨平臺性比較強。靈活性比較強,能夠寫很複雜的SQL語句。
    JDBC的缺點:
           由於JAVA是面向對象的,JDBC沒有作到使數據可以面向對象的編程,使程序員的思考仍停留在SQL語句上。
             操做比較繁瑣,不少代碼須要重複寫不少次。
            若是遇到批量操做,頻繁與數據庫進行交互,容易形成效率的降低。
(16)shiro 權限管理:
怎麼管理 .
 
(17)LINUX經常使用命令:
ls查看文件權限 / 目錄信息
cd 切換目錄
pwd     查看當前工做目錄路徑
mkdir建立文件夾
rm      刪除一個目錄中或多個文件和目錄
rmdir   從一個目錄中刪除一個或多個子目錄項
mv      移動文件或修改文件名
cp複製
find    基於查找功能
tar對文件進行打包
time    測算一個命令的執行時間
(18)線程建立的兩種方式:
1. extends thread 類
2. implements runnable 接口(更好的解耦合)
(19)wait 和 sleep 的區別:
wait:屬於object 類,釋放同步鎖 ,不須要捕獲異常
 無限期,除非調用notify
sleep:屬於 thread類,不釋放同步鎖 ,須要捕獲異常
  有時間限制,調用interreput() 能夠強行打斷
(20)hibernate 緩存: (提升檢索效率)
一級緩存: session(會話級)級別的緩存,隨着session的關閉而銷燬
 
二級緩存: 稱爲全局緩存 / 應用級緩存 
可以使用範圍: 當前應用的全部會話
    要建立一個ehcache.xml 配置文件
   何時使用:  不多被修改的數據 ,容許少許併發.
 
(21)表單提交兩種方式GET和POST的區別:
        * GET的提交的參數會顯示到地址欄上,而POST不顯示.
        * GET每每是有大小限制的,而POST沒有大小的限制.
        * GET沒有請求體,而POST有請求體.form表單用post
 
(22)XML的解析方式有哪些:
       * DOM和SAX:
           * DOM一次性將文檔加載到內存,造成樹形結構.若是文檔過大容易致使內存溢出.方便增刪改的操做.
           * SAX邊讀邊解析的方式,若是文檔大,不會致使內存溢出,可是不能進行增刪改.
 
(23)Servlet的生命週期:(*****)
生命週期:就是一個對象從建立到銷燬的過程.
Servlet生命週期:Servlet從建立到銷燬的過程.
* 什麼時候建立:用戶第一次訪問Servlet建立Servlet的實例
* 什麼時候銷燬:當項目從服務器中移除的時候,或者關閉服務器的時候.
用戶第一次訪問Servlet的時候,服務器會建立一個Servlet的實例,那麼Servlet中init方法就會執行.任何一次請求服務器都會建立一個新的線程訪問Servlet中的service的方法.在service方法內部根據請求的方式的不一樣調用doXXX的方法.(get請求調用doGet,post請求調用doPost).當Servlet中服務器中移除掉,或者關閉服務器,Servlet的實例就會被銷燬,那麼destroy方法就會執行.
  
(24)四大域對象:
pagecontext:頁面範圍的數據
servletrequest:請求範圍的數據
Httpsession:會話範圍的數據
servletcontext:應用範圍的數據.
 
(25)事務特性:原子性,一致性,隔離性,持久性
    什麼是會話:用戶打開一個瀏覽器訪問頁面,訪問網站的不少頁面,訪問完成後將瀏覽器關閉的過程稱爲是一次會話.
 
(26)上傳和下載的條件和方式
文件上傳:
使用fileupload:
得到磁盤文件工廠對象
經過工廠得到核心解析類
解析request對象,返回集合,集合中的內容是分割線分紅的每一個部分
遍歷每一個部分
三要素:
1.提交方式必須爲 post提交
2.必須有name屬性  <input type="file" name="upload">
3.enctype="multipart/form-data"
技術:
servlet 3.0
JSPSmartUpLoad
FileUpload(必須導入2包)
fileupload包
io包
struts2
文件的下載:
2個頭 1個流:
(27)轉發與重定向 的 區別:
轉發:1.一次請求 一次響應
2.地址欄不會改變
3.只能在本網站內訪問
4.路徑不用加工程名
重定向: 1.兩次請求,兩次響應
2.地址欄會改變
3.能夠定向到任意網站
4.要加工程名.
(28)靜態包含和動態包含的區別:( <%@ include%> 和<jsp:include> )
靜態(1個class):至關於發現了以後 直接所有複製過來 而後翻譯成Servlet,編譯成一個class文件    
包含(多個class):各個文件都已經編譯好了,這個地方只包含的結果 前面定義的變量在這個地方不能繼續使用
 
 
(29)設計模式:
建立型模式:
單例模式 :
保證一個類只有一個實例,而且提供一個訪問該實例的全局訪問點.優勢:提升了系統性能 / 節省內存 
應用場景:
[1]任務管理器 Task Manager
[2]回收站 Recycle Bin
[3]網站計數器 
[4]文件系統
[5]Spring中每一個bean默認都是單例的(action是例外),優勢是Spring容器能夠管理
[6]在servlet編程中,每一個servlet也是單例
[7]在spring MVC / struts1框架中,控制器對象也是單例
五種單例實現方式:
主要:
餓漢式:線程安全 調用效率高 不能延遲加載
(1)私有構造器 (別人訪問不了)
(2)private static 屬性
(3)提供一個public方法
 
懶漢式:線程安全 調用效率不高 能夠延遲加載 
其餘:
雙重檢測鎖式:
靜態內部類式:
枚舉單例:
工廠模式  
抽象工廠模式  
建造者模式  
原型模式
結構型模式:
適配器模式  
橋接模式 
裝飾模式 
組合模式  
外觀模式  
享元模式 
代理模式
行爲型模式:
模版方法模式 命令模式 迭代器模式  觀察者模式  中介者模式
備忘錄模式  解釋器模式  狀態模式 策略模式 職責鏈模式 訪問者模式 
 
(30)棧是先進後出的線性表
 
    棧具備記憶做用
 
(31)cookie 和session 的區別:
一、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
二、cookie不是很安全,別人能夠分析存放在本地的COOKIE並進行COOKIE欺騙
  考慮到安全應當使用session。
三、session會在必定時間內保存在服務器上。當訪問增多,會比較佔用你服務器的性能
  考慮到減輕服務器性能方面,應當使用COOKIE。
四、單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie。
 
(32)一、Java基礎
集合框架.doc
多線程詳解.doc
單例模式和多線程結合.doc
I/O詳解.doc
Socket和TCP/IP詳解.doc
 
二、框架簡介
SpringMVC優點
SpringMVC和Struts2的區別
Spring註解、事物的實現
AOP+IOC簡單介紹
Hibernate和MyBatis的區別、各自優缺點
 
三、電商項目
開發流程
電商業務
架構梳理
用到的技術、各自技術的好處;
 
(33)git 和 svn 的區別:
   1.GIT是分佈式的 , svn 不是.
   2.GIT把內容按元數據方式存儲,而svn是按文件
   3.GIT和SVN的分支不一樣
   4.GIT沒有一個全局的版本號,而svn有
   5.GIT的內容完整性要優於SVN,底層用的是SHA-1 哈希算法.   
   6.SVN必須先update才能commit
(34)爲何從上家公司離職?
從技術的角度來講,IT技術迭代很是快,杭州這座城市最近幾年IT發展的很是快.
 
(35)錄音心得:
孫雪巖:
簡歷:
      用熟悉不用精通! 
技術描述須要分層次,好比熟悉的放前面,理解的放中間,瞭解的放後面.如此排版便可
項目描述:
SOA架構
Tomcat服務器
內容管理系統
單點登陸系統
搜索系統
訂單系統
Redis緩存
頁面靜態化
Nginx 負載均衡/反向代理
(35)http協議請求的幾種方式:
get:對服務器資源的簡單請求
post:用於發送包含用戶提交數據的請求
head put delete trace options connect
(36)集合的種類 ? list 和 set 的區別? arraylist 和 linkedlist 區別 ?
Collection :單列集合
List:有序 能夠重複  有索引 能夠經過索引對元素進行操做
ArrayList
LinkedList
Vector
Set:無序 不能夠重複
HashSet
TreeSet
 
Map:雙列集合
特色:
雙列集合   Collection是單列集合
鍵不能夠重複,值能夠重複。Set:無序 不能夠重複
數據結構針對鍵有效
(37)事務: 最小的邏輯操做單元!  必須同時成功或者同時失敗.
怎麼處理事務 ? spring 來控制,放在service層
 
(38)hibernate和mybatis的區別
 
 
(39)springmvc 表現層
mybatis 持久層
spring  業務層  控制反轉IOC/面向切面AOP   管理bean對象的建立 springfactory 
aop 加強代碼 ,動態代理.
       就是一個容器 把其餘整合在一塊兒 .前端接收回顯數據
controller接口請求封裝參數 調用service(具體的業務邏輯)  service調用dao持久層(主要鏈接數據庫,與數據庫作交互).
(40)static靜態的理解,加載的前後順序
 
(41)對java反射的理解?  動態加載一個類,獲取類的內部結構,來動態調用.
 
代碼抽取的時候.
 
(42)基本數據類型和引用數據類型的區別
byte int short long float double boolean char 在內存中的一個地址存放這些數值,一個變量指向的是這個內存地址
而其餘屬性類對象,在內存中引用的內存地址而不是具體的值
 
(43)pom / shiro 
 
(44)echarts  純js的圖標庫,流暢運行在pc和移動設備,兼容絕大部分瀏覽器
 
(45)回調:就是A類中調用B類中的某個方法C,而後B類中反過來調用A類中的方法D,D這個方法就叫回調方法
 
(46)分佈式計算的優勢
可靠性(容錯) :
分佈式計算系統中的一個重要的優勢是可靠性。一臺服務器的系統崩潰並不影響到其他的服務器。
可擴展性:
在分佈式計算系統能夠根據須要增長更多的機器。
資源共享:
共享數據是必不可少的應用,如銀行,預訂系統。
靈活性:
因爲該系統是很是靈活的,它很容易安裝,實施和調試新的服務。
更快的速度:
分佈式計算系統能夠有多臺計算機的計算能力,使得它比其餘系統有更快的處理速度。
開放系統:
因爲它是開放的系統,本地或者遠程均可以訪問到該服務。
更高的性能:
相較於集中式計算機網絡集羣能夠提供更高的性能(及更好的性價比)。
(47)分佈式計算的缺點
故障排除:
故障排除和診斷問題。
軟件:
更少的軟件支持是分佈式計算系統的主要缺點。
網絡:
網絡基礎設施的問題,包括:傳輸問題,高負載,信息丟失等。
安全性:
開發系統的特性讓分佈式計算系統存在着數據的安全性和共享的風險等問題。
(48)併發鎖

(1)減小鎖的持有時間(縮小鎖的範圍)
(2)下降鎖的請求頻率(下降鎖的粒度)
(3)放棄使用獨佔鎖,使用併發容器,原子變量,讀寫鎖等等來代替它。前端

相關文章
相關標籤/搜索