1 1 nio是什么?原理是什么?解決什么問題?如何實現? 2 nio是nonblocked io 非堵塞流 3 核心類有 Channel/Selector/Buffer 4 解決高並發情況下流的阻塞問題 5 6 2.IO/NIO的區別,為什么要用NIO,使用IO中的Buffered..也能實現NIO的面向緩沖,什么情況下用NIO? 7 io面向流/nio面向緩沖的 8 io是阻塞的/nio是非阻塞的 9 io沒有選擇器/nio有選擇器 10 舉例: 11 就是將100個客人的需求被登記區記錄排序,然后讓10個服務員(線程)到登記區(selector)領需求,完成后再返回領 需求,這樣效率高 12 文件超大時候,使用nio緩沖區MappedByteBuffer,讀寫性能高,而且是異步的 13 14 15 3 什么是同步?什么是異步? 16 同步:程序的執行順序和任務的排列順序保持一致的,好比排隊取餐 17 異步:程序的執行順序和任務的排序順序可以不一致,因為每個任務都有一個回調函數, 18 回調函數將原來的任務分擔出一些功能,給原來的任務減負,程序執行任務耗時縮短 ,比如ajax技術 19 20 參考 21 22 http://blog.csdn.net/zhouhl_cn/article/details/6568119(比喻介紹IO/NIO的區別) 23 24 https://my.oschina.net/u/1010990/blog/192558(區別與比較) 25 26 http://ifeve.com/java-nio-vs-io/ 27 28 29 30 2.熟悉的排序算法有哪些,快速排序算法的實現原理? 31 32 常見的冒泡排序、選擇排序、插入排序、歸並排序、快速排序算法原理弄明白 33 34 參考:http://blog.csdn.net/ygc87/article/details/7208082 35 36 37 3.HashMap與HashTable與ConcurrentHashMap有什么區別?HashMap的存儲結構? 38 ConcurrentHashMap是HashTable的替代品 39 使用了多個鎖代替HashTable中的單個鎖,也就是鎖分離技術 40 41 HashMap回答是hash結構存儲會繼續問如果相同的值要存儲在指定位置沖突了怎么解決,沖突的取的時候怎么取保證數據准確 42 43 hashmap可以接收null的key和value 44 45 concurrenthashmap不允許key value為null 46 47 參考:http://www.cnblogs.com/ITtangtang/p/3948786.html 48 49 https://yq.aliyun.com/articles/38213 50 51 52 53 4.vector、ArrayList、LinkedList區別及存儲性能。 54 55 ArrayList:數組結構,查詢快,線程不安全,通過工具類Collections中的synchronizedList方法編程線程安全的 56 Vector:數組結構,查詢慢,線程安全,屬於遺留容器,不推薦使用 57 58 LinkedList:雙向鏈表結構,增刪快,線程不安全 59 參考: 60 http://www.jb51.net/article/75093.htm 61 http://www.cnblogs.com/jiangyi-uestc/p/5682699.html 62 63 5.多線程實現的幾種方式,有什么區別,一般用哪個,為什么? 64 實現Runnable接口、繼承Thread類執行線程無返回值 65 使用Callable,ExecutorService,Future接口,線程執行都有返回值 66 參考:http://www.cnblogs.com/felixzh/p/6036074.html 67 68 69 6.多線程中線程池怎樣使用及其實現原理? 70 http://blog.csdn.net/qq_31753145/article/details/50899119 71 72 73 7.volatile關鍵字的作用是什么? 74 在成員變量之前添加volatile關鍵字,使其對多線程(任務)具有可見性 75 為了線程安全,使用volatile修飾成員變量,sychronized修飾方法或者代碼塊,條件允許,盡量使用 同步代碼塊,因為有些方法不需要對整個方法加鎖,而是對方法中的關鍵幾步加鎖 76 77 補充:java內存模型中 內存里的數據具有 可見性/原子性/有序性三大特性 78 可見性:一個線程修改某個變量的值后,其他線程可以看見修改結果 79 原子性:最小單位,不可分割的,比如 a=1是原子操作(a非long或double類型) 80 a=a+1;是非原子操作,a是可變的 81 有序性:多個線程操作共同資源(屬性或方法),必須要先排序后操作 82 參考:http://www.cnblogs.com/paddix/p/5428507.html 83 http://www.infoq.com/cn/articles/java-memory-model-4/ 84 85 86 8.synchronized關鍵字的作用,使用該關鍵字后保證同步了,同步代碼塊與同步方法有什么區別? 87 sychronized修飾方法或者代碼塊,條件允許,盡量使用同步代碼塊,因為有些方法不需要對 整個方法加鎖,而是對方法中的關鍵幾步加鎖,同步方法鎖定的范圍太大,嚴重延長其他線 程的阻塞時間,降低效率 88 參考:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html 89 90 91 9.多個對象對同步方法一定能保證同步嗎?多個對象對靜態同步方法保證同步嗎?兩個靜態同步方法能保證同步嗎? 92 93 多個 對象對同一個同步方法不能保證同步 94 主要看需要同步的方法:若是靜態方法,那是類的方法,鎖針對的是類的,獨享一份,可以保證同步 95 若是非靜態方法,那鎖針對的是對象的,一個對象一個同步方法 96 97 參考:http://www.cnblogs.com/hapjin/p/4678773.html 98 99 http://topmanopensource.iteye.com/blog/1738178 100 101 102 10.start方法與run方法的區別? 103 start是啟動線程,讓線程進入排隊序列,等待jvm調用run方法 104 run是直接運行方法 105 參考:http://blog.csdn.net/xuxurui007/article/details/7685076 106 107 11.一個線程可以多次start嗎,會報錯嗎? 108 這個會報非法異常IllegalThreadStateException 109 110 12.線程中通過什么方式傳輸數據?使用過隊列,為什么要使用隊列,何種情況下使用隊列? 111 io流方式傳輸數據 112 消息隊列activemq組件 113 114 13.spring AOP IOC實現原理? 115 ioc是控制反轉 116 aop 是面向切面編程 業務類和通用類進行橫向切割,通用類通過代理的方式實現 117 118 14.spring中的事務的傳播方式怎樣實現的? 119 事務傳播就是一個業務使用到多個被事務化的方法,如何決定用哪些事務組合 120 Propagation傳播行為類型有7種,比如propagation_required/propagation_supports等 121 122 15.spring中事務實現的原理? 123 實現PlatformTransactionManager接口,根據不同的平台實現不同的事務功能 124 編程式事務 和注解式事務 125 126 16.springmvc實現原理? 127 DispacthServlet/HandlerMapping/HandlerExcutionchain/ 128 HandlerAdapter/Handler/ViewResolver/View 129 130 17.為什么要使用數據庫索引,數據庫索引有哪些,索引的底層原理是什么? 131 避免全表的遍歷查詢,提高查詢性能 132 創建索引:CREATE INDEX index_name ON table_name 133 刪除索引:DROP INDEX table_name.index_name 134 主鍵索引/唯一索引/復合索引等 135 b+tree的數據結構 136 137 18.sql查詢緩慢怎么處理,sql優化方案有哪些,explain用過嗎? 138 建立索引 139 explain語句檢測sql語句,比如explian select * from table_name 140 141 19.數據庫中的鎖有幾種? 142 比如行鎖、表鎖、讀鎖、寫鎖 143 144 20.數據庫為什么要使用事務,事務的原理? 145 保證數據庫數據的准確性和安全性 146 一起執行或者一起回滾 147 148 21.oracle數據庫的分頁怎樣實現? 149 偽列rownum 150 select * 151 from (select t.*,rownum from table_name t) 152 where rownum>=(pageNo-1)pageSize and rownum<=(pageNo)*pageSize; 153 154 22.數據庫分庫分表的方法,垂直分還是水平分,根據哪些來分? 155 垂直分庫 按照業務分成多個數據庫。一個數據庫放客戶表/訂單表 變成 2個數據庫 一個放 客戶表,一個分訂單表,類似 微服務 156 垂直分表 157 按照字段拆分成多表 c1,c2,c3-->c1,c2和c1,c3 158 水平庫內分表 159 水平分庫分表 160 161 162 23.solr搜索實現原理、使用的排序算法是什么,怎樣實現快速查詢? 163 用戶提交請求到solr搜索引擎模塊,搜索引擎模塊事先將數據庫信息導入其中,同時搜索引 擎有增量更新機制。 164 權重排序法 165 建立全文索引 166 167 168 24.3次握手的原理是什么? 169 第一次:客戶端向服務端發送請求連接包 170 第二次:服務端向客戶端發送請求包和確認包,表示請求收到,並且請求連接 171 第三次:客戶端向服務端發送確認收到請求的確認包,兩端連接成功 172 173 25.動態代理實現原理是什么和動態代理使用的方法、類有哪些? 174 創建一個代理類實現InvocationHandler,重寫invoke(Proxy proxy,Method method,Object args)方法 175 invoke()/InvocationHandler接口 176 177 178 26.webservice hessian區別? 179 180 181 182 27.redis的數據結構有哪些? 183 184 字符串(String)、散列(Hash)、列表(List)、集合(set)、排序集合(sort set) 185 186 187 188 28.虛擬機了解多少? 189 組成 190 類加載器 191 運行時數據區 192 方法區(類信息/靜態成員變量/常量池) 193 堆 194 程序計數器 195 虛擬機棧 196 本地方法棧 197 本地方法接口 198 執行引擎 199 200 201 29.spring默認是單利還是多例的? 202 203 默認單例 Singleton /prototype/request/session/global session(scope) 204 205 206 30.mybatis中#$的區別? 207 208 #防止sql注入 ,相當於占位符,傳入的語句是加單引號的 209 $一般用於傳入數據庫對象,例如傳入表名. 210 211 區別:#將傳入的數據都當成一個字符串,會對自動傳入的數據加一個雙引號。如:order by #user_id#,如果傳入的值是111,那么解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id". 212 參考:http://blog.csdn.net/downkang/article/details/12499197/ 213 214 31.常用的隊列Queue有哪些?什么情況下使用? 215 隊列是一種先進先出(First In First Out,FIFO)的數據結構 216 LinkedList /Vector 217 218 常見的消息隊列有哪些?各自特點? 219 解決問題:高並發問題 220 其實對於這些消息隊列的產品,每一種都在某一領域占有一席,雖然ActiveMQ目前在社區已 經不是很活躍,但是其下一代產品Apollo已經問世。ZeroMQ小而美,RabbitMQ大而穩,Kakfa 和RocketMQ快而強勁。 221 222 32.線程的幾種狀態及其切換? 223 224 創建態 就緒態 運行態 阻塞態 終止態 225 226 227 33.網頁中常出現的代碼? 228 200 ok 229 403 訪問被禁止 230 404 頁面找不到 231 500 服務器問題 232 參考:http://www.cnblogs.com/ctaixw/p/5075727.html 233 234 34.數據庫的特性? 235 ACID 原子性 一致性 隔離性 持久性 atomicity/consistency/isolation/durability 236 237 35.java7 8有哪些新特性? 238 java 7 switch case 支持字符串 239 java8 主要是拉姆達表達式操作集合 240 java9 主要是模塊化 241 242 36.你知道的線程安全的類有哪些,方法有哪些? 243 StringBuffer /HashTable/ConcurrentHashMap/Vector 244 245 37.數據庫的樂觀鎖和悲觀鎖的原理及使用? 246 樂觀鎖:樂觀的認為數據記錄可能沒有被修改,使用version方式操作數據庫; 247 語法: update table_name set 某字段=新值,version=version+1 where version=# {version}and id=#{id} 248 悲觀鎖:悲觀的任務,數據記錄肯定被修改了,處處加鎖(表鎖/行鎖/讀鎖/寫鎖),思想同 “sychronized” 249 250 38.用過的中間件有哪些? 251 常用的中間件 比如dubbo+zookeeper(分布式框架)/ rocketmq /redis 等 252 253 39.如果讓你對外開發一個接口,你會考慮哪些因素? 254 可擴展性/功能單一 255 256 40.設計數據庫的時候會考慮哪些因素,怎樣去建表? 257 避免數據冗余 258 數據的完整性 259 表與表的主外鍵關系 260 第一范式:確保字段的原子性 261 第二范式:確保每個字段都和主鍵有直接關系 262 263 41.對於建表,大部分表中哪些相同的字段會都考慮包含? 264 id/添加人/修改人/添加時間/修改時間 265 266 42.對GC了解多少? 267 Object.finalize()/System.gc() 隱式回收 268 269 43.linux權限分組 270 初創建一個用戶user1,系統默認生成user1組,user1用戶默認是user1組內成員 271 新建一個文件,默認創建者是owner 272 每個文件對應的owner/group/other可以設置不同權限, 273 權限分類:r/w/x 274 chmod u+a file 改變文件的權限 275 chown hw file 改變文件的owner 276 chgrp root file 改變文件的歸屬組為root管理員組 277 278 44.Integer與int的區別,什么情況下使用Integer什么情況下使用int,Integer是否有緩存? 279 Integer中有一個靜態的內部類IntegerCache,內部類中有個cache[]常量池,分配內存空間時 一個字節 280 當默認值為0時使用int,一般進行算數運算時使用int 281 默認值為null時使用Integer 對象,調用方法和屬性時使用 282 283 45.堆和棧的區別,堆中存放什么,棧中存放什么? 284 方法區:類信息/靜態成員變量和方法和代碼塊(不存在靜態的局部變量之說)/常量(常量 池) 285 堆:new對象/ 286 棧:局部變量/對象引用/基本數據類型 287 288 289 46.springmvc中controller線程安全嗎? 290 安全,單例的,前提是Controller內沒有實例變量,若是有實例變量的話,線程不安全 291 292 47.springmvc中controller方法中為什么不能定義實例變量? 293 線程不安全,一個請求,修改該變量的值,同時會被另一個請求讀取到,會造成數據錯誤 294 295 48.union 與union all區別? 296 union是聯合查詢,將兩表查詢結果中的重復記錄合並成一條; 297 union all 是不合並,都保留 298 299 49.count(1) count(5) count(*)有什么區別,100萬條數據的效率如何? 300 count(*)統計包含null值的行數 301 count(1)統計不包含null值的行數 302 count(1)中的1表示系統自動添加字段名為1,對應的值也是1的列,然后統計1出現的次數 303 count(5)同理count(1) 304 305 306 50.left join right join 區別? 307 left outer join 是以左表為基准,每條記錄和右表進行匹配,匹配成功時, 308 連接成一條數據記錄;匹配不成功的話,右表以null值和左表連接成一條記錄 309 310 51.inner join與join的區別? 311 312 無區別。join默認時 inner join 313 314 315 52.數據庫設計遵循的三范式? 316 317 第一范式 :確保字段的原子性 318 第二范式: 確保每個字段都和主鍵有關 319 第三范式: 確保每個字段都和主鍵有直接關系 320 321 53.springmvc中的攔截器的作用? 322 攔截請求和分配請求到指定的控制器 DispatchServlet 323 324 54.Springmvc攔截器與java過濾器的區別? 325 攔截器依賴spring容器,使用Spring中任何資源,過濾器依賴servlet容器 326 攔截器是通過反射機制實現的,過濾器是通過方法調用 327 filter的生命周期 328 實例化限一次--》init()限一次--》doFilter()反復多次--》destroy() 329 servlet的生命周期 330 實例化 331 init()限一次 332 service()提供服務 333 destroy()銷毀 334 參考:http://blog.csdn.net/chenleixing/article/details/44573495 335 336 55.webservice使用的的什么語言,使用的什么協議? 337 wsdl描述語言 soap協議 338 339 340 56.springmvc注解@pathVariable的作用? 341 342 @PathVariable 是路徑變量:將URL中的占位符參數 綁定到控制器中方法的形參中 343 344 345 57.java虛擬機內存怎么調整? 346 347 http://jingyan.baidu.com/article/a948d6516670880a2dcd2e2c.html 348 http://www.cnblogs.com/happyPawpaw/p/3868363.html 349 350 58 gc的運行原理是什么? 351 隱式的被調用object.finalize(),進行垃圾回收前的准備工作 352 ; system.gc() 353 354 59 JVM內存管理機制和垃圾回收機制(基本每次面試都會問,一定要搞得透徹) 355 jvm將內存划分為 356 方法區(類信息/靜態域/運行時常量池) 357 堆(new對象、數組) 358 程序計數器 359 虛擬機棧(局部變量、對象引用、基本數據類型) 360 本地方法棧(native方法) 361 60 GC回收機制 哪些內存需要回收? 362 java堆、方法區的內存 363 364 ——when 什么時候回收? 365 根據 引用計數法(當引用次數等於0時,回收) 366 可達性分析 (當對象找不到gc root根對象時,回收) 367 來分析是否需要回收 368 369 ——how 怎么回收? 370 標志算法(將找不到根對象的對象做標志,然后回收) 371 復制算法(將內存一分為二,這一塊滿了,復制到另一塊上,然后將這一塊內存回收) 372 分代算法(按照存活時間,將方法區中對象分為新生代(使用復制算法回收)和老年代(使 用標志算法回收),堆中的對象稱為永久代) 373 374 375 61 JVM內存調優(了解是怎么回事,一般做項目過程中使用較多) 376 堆大小的設置 377 回收器的選擇 378 379 380 62 設計模式(熟悉常見設計模式的應用場景,會畫類圖,實在不行背幾個也是有用的) 381 單例模式/工廠模式/代理模式 382 383 63 多線程(每次都會問,包括線程和進程、線程狀態、線程並發的操作等,需要深入復習) 384 線程是cpu調用程序的最小單位 385 進程是運行中的動態程序,有一個一個線程構成 386 線程狀態 新生/待運行/運行/阻塞(同步阻塞、wait阻塞、其他阻塞)/死亡五個狀態 387 線程並發:單核cpu只能一次處理一個任務(線程),也就是一個時間片內處理一個線程 388 389 390 64 JAVA集合類框架(理解框架圖、HashMap、ArrayList、HashSet等的關系和區別,其中HashMap的存儲機制幾乎每次都有問) 391 Collection (List (ArrayList/) 392 Set ) 393 Map 394 hashmap是通過數組和單鏈表數據結構實現的 395 默認數組容量是2^4,最大容量2^30;當默認數組容量占用了3/4時,進行擴容一倍 396 hash算法生成數組下標,8進6退 紅黑樹 397 398 hashTable是多線程的,hashMap是單線程的 399 400 401 65 JAVA的異常處理機制(異常的分類、常見的異常有哪些、Try catch finally的使用) 402 throwable (error/exception) 403 空指針異常NullPointerException/類型轉換異常ClassCastException/下標越界異常 ArrayIndexOutOfBoundsException/算術異常ArithmeticException 404 405 406 66 Linux基礎(面試筆試中對linux也有一定的要求,建議最好搭建一個linux虛擬機,並練習常用的命令) 407 chmod a+rwx folder 408 409 67、jvm調優,tomcat調優 410 411 68、arraylist和linkedlist區別 412 數組列表 鏈式列表 413 414 蘇寧金服: 415 69、問的項目業務,公司業務模塊(無從下口) 416 用戶模塊/訂單模塊/庫存模塊/線路模塊/采購單模塊 417 418 70、為什么要用redis,相比於如memcached,mongodb有什么優勢? 419 redis是存儲在內存中的,以鍵值對形式存儲; 420 與memcached比較,redis存儲速度快,數據可以持久化保存在磁盤上; 421 mongodb是面向文檔,存儲json數據居多; 422 423 424 425 71、springmvc和struts區別(都不會). 426 mvc基於類中的方法,struts是基於類本身; 427 mvc通過Dispatherservlet處理請求,structs是通過過濾器Filter (StrutsPreparedAndExcuteFilter) 428 429 72、用過什么數據庫,有沒有做過數據庫優化,什么情況下要用到索引,好處是什么, 430 mysql、Oracle、redis、 431 謹慎使用*/子查詢/創建索引/索引字段放在篩選條件的第一位 432 433 73、哪些字段適合建立索引,mysql索引底層數據結構了解嗎,索引什么情況下會失效,聯合索引abc只用了a字 段,索引是否會生效。 434 字段長度小/不重復/數字/ 435 b+tree數據結構 436 會生效,遵循最左原則 437 sql語句中where篩選條件中有 or時,會使索引字段失效,通過explain測試 438 解決方案:將or中的所有字段都設置成索引 439 name like '%a'查詢是以%開頭,會使name索引失效 440 441 442 74、什么情況下要用到多線程,為什么要用,好處。啟動多個線程,如何知道他們都運行完畢了。 443 應用場景:tomcat處理多個請求用到多線程 444 處理多個io流是也會用到多線程 445 通過運行多個程序的時候 446 ,提高cpu的利用效率 447 調用CountDownLatch類(計數器)中的countDown()方法 448 449 75、jquery要想取某個節點中的第幾個元素怎么寫,具體哪個方法? 450 $("ul").find("li").eq(3) 451 452 蘇寧易購網站購物車消費者業務線: 453 76、string為什么是不可變的, 454 成員變量:字符數組 char value[] 是final修飾的,不可變的 455 456 77 sleep和wait區別? 457 sleep自動喚醒,wait需要人工喚醒 458 有鎖的情況下,wait會釋放鎖,sleep不會釋放鎖 459 460 78 實現線程的方式, 461 實現Runnable Callable 462 繼承 Thread 463 464 79 run,start區別, 465 start使線程進入可運行狀態,進入線程隊列和其他線程一起爭奪cpu資源, 466 搶奪成功后,jvm調用run方法 467 run 是調用方法,使線程直接運行 468 469 80 synchronize實現原理與lock區別?自旋鎖是什么? 470 實現原理 471 區別 472 sync自動釋放鎖,lock手動釋放鎖 473 474 自旋鎖就是線程在等待鎖的時候,不會進入阻塞狀態,而是無目的的自我旋轉運行。 475 簡而言之,就是自旋的方式獲得鎖。 476 好處:減少了運行到阻塞再到運行這一過程產生的內存開銷。 477 478 81 線程池,線程池等待隊列,拒絕策略,死鎖產生原因。 479 480 82 事務特性,索引失效,mysql有哪些函數。 481 acid 原子性 一致性 隔離性 持久性 482 條件 or like"# String類型的沒有加``(撇號) 483 484 83 http和https區別是什么? 485 http是明文傳輸,https是密文傳輸 486 487 488 84 get和post區別? 489 get 能被緩存,再次刷新不會重新發送請求,能收藏為書簽,能保留在瀏覽歷史中 490 get 將參數放在url中傳遞,post放在requestbody中 491 get 傳遞的信息不能超過2048kb,post沒有限制 492 get 傳遞參數是可見的,不安全,post相對安全 493 494 85 springbean是單例嗎,spring源碼看過嗎,其中的單例bean是怎么實現的。 495 Springbean單例是指一個Spring容器中只有一個某對象 496 ApplicationContext ac=new ClassPathXmlApplicationContext("");//一個Spring容器 497 ac.getBean("idVal")//獲得單例bean 498 通過單例注冊表的方式實現單例的 499 500 86 redis有支持哪些數據結構。servlet怎么取前端參數? 501 String hash list set zset 502 503 87 設計個洗牌算法。 504 2i % n+1 505 506 88 線上購物車需要有個標志唯一id,有什么方法實現這個id(uuid,參考jdk中random實現原理,取隨機種子 507 util.UUID 508 String uuid=UUID.randomUUID().toString().replace("-","") 509 510 89 大數據部門:抽象類接口區別? 511 抽象類不一定有抽象方法,接口要有抽象方法 512 抽象類被子類繼承,接口與實現類之間沒有繼承關系 513 抽象類是對子類中共同屬性和方法的抽離,減少代碼的重復 514 接口是一種功能的規范 515 516 90 接口中可以定義成員變量嗎,默認是什么類型的變量(public static final),接口中方法權限可以是 private嗎,接口是否可以寫具體實現(答:jdk8開始可以) 517 可以有成員變量,默認是public static final 518 方法權限不能是private,這樣沒有意義 519 接口中可以是方法的默認實現,從jdk8開始 520 521 91 重寫重載區別? 522 重寫出現在父類和子類之間,返回類型、方法名、參數列表都要和父類一致,子類編寫方法體 523 重載出現在同類中,與返回類型無關,方法名相同,參數列表不同 524 525 92 線程的實現方式(我已經感覺到這個部門有多缺人了)。 526 extends Thread,implements Runnable(run方法無返回值) 527 ,Implements Callable(call方法有返回值) 528 529 93 sql交並集? 530 交集 內連接 531 並集 union 聯合連接 532 差集 where 字段 not in (sql語句) 533 534 94 事務隔離級別? 535 isolation級別 536 read_uncommitted 可以讀取未提交的數據 537 read_committed 提交后讀取:避免臟讀 538 repeatable_read 可以重復讀:避免臟讀和不可重復讀 539 serializable 避免了臟讀(數據回滾)/不可重復讀(某條記錄修改update)/幻讀(結 果集增減insert/delete) 540 541 94 能調用另一個類的私有方法嗎,怎么做? 542 Method method=B.class.getDeclaredMethod("B的私有方法名"); 543 method.setAccessible(true); 544 method.invoke(new B()); 545 546 96 如果線程池執行shutdown或shutdownNow,線程池中線程會中斷嗎,會出現什么異常,? 547 catch處理中該寫些什么。 548 shutdown和shutdownNow是用來關閉線程池的 549 shutdown:正在執行的任務不中止,執行完畢后中止,准備執行的任務中止 550 shudownnwo: 無論執行中還是准備執行的任務一律中止 551 552 97 用過哪些concurrent包下的類,說說原子類? 553 ConcurrentHashMap, 554 98 cas操作可能會存在什么問題。 555 556 557 100 treemap中compartor用了什么設計模式, 558 559 蘇寧物流部 560 561 103 servlet和jsp區別,如果沒有servlet,jsp怎么跟后端交互(大概是這個意思,沒聽太懂,一臉懵逼)。 562 在jsp中使用java腳本實現請求分配 563 564 104 springmvc怎么取前端數據,springmvc模式下,如果沒有注解怎么取前端參數 565 (答:servlet,requset.getParameter。他問,具體在哪怎么用,也沒聽太懂,懵逼)。 566 567 105 搭建springmvc項目步驟。 568 DispatherServlet/HandlerMapper/HandlerExecutionChain/HandlerAdapter/ModelAndView/解析和渲 染 569 web.xml中配置前端控制器的攔截器 570 web.xml中引入springmvc的配置文件 571 mvc配置文件中配置 視圖解析器 ViewResolver 解析路徑 572 573 574 106 spirngmvc controller中定義全局hashmap,它是否是線程安全的,為什么。 575 不安全的,這個成員變量是多個請求共享的,若是一個請求修改變量值,其他請求讀取到的是修改后 576 的值,線程不安全 577 578 107 項目中用哪種方式解析xml的? 579 dom解析/dom4j解析 580 581 582 108 servlet生命周期。tomcat在初始化中做了什么事(答:啟動socket服務端...問:沒了嗎?答:... 很明顯 該回答的還有很多,想了解的應該是我對tomcat的理解程度,以及是否看過tomcat源碼)。 583 584 109 是否用過Nginx。過濾器和攔截器的區別。 585 過濾器基於servlet容器,攔截器是基於Spring容器的 586 過濾器值初始化一次,攔截器 587 588 110 項目中有用到緩存嗎,redis有提供了哪些存儲數據結構,redis持久化。 589 redis 590 String/hash/list/set/zset 591 redis可以持久化,這是優於memcached的一個特點 592 593 111 說說java內存模型? 594 jmv將內存划分為 595 方法區(類信息/靜態域/常量池) 596 堆(new對象,) 597 程序計數器 598 虛擬機棧(對象引用,局部變量,基本數據類型) 599 本地方法棧 600 本地接口 601 執行引擎 602 新生代老年代算法,你說的新生代老年代屬於堆還是棧,還知道哪些gc算法,創建大對象也是在新生代分配嗎,(答:直接晉升進入老年代,問:具體多大對象,答:超過eden區大小,問:你是否確定,頓時虛了,后來回去查閱過,我回答的不對,jvm這里的看點很多,涉及到優化)。新生代的算法,說說minor gc,minor gc觸發條件。老年代用了什么算法,說說標記整理算法,full gc是否真正回收了廢棄對象。有哪些gc策略。你覺得你的項目中如果需要jvm調優你會注重哪個分帶的調優,或者說更注重哪種gc調優,為什么,具體怎么做(懵逼,隨便吹了下。問:你確定嗎? 頓時又虛了)。 603 604 線上系統每天會收到20萬級的數據,一個月會有百萬條,並且還會遞增。你如何設計數據庫 605 (答:分庫分表,建立索引,問:分庫分表對的,還有哪些點,分庫分表按什么規則分)。 606 607 608 112 jdbc連接步驟? 609 加載驅動 610 Class.forName("com.mysql.jdbc.Driver"); 611 創建連接對象 612 String url="jdbc:mysql://localhost:3306/databasename"; 613 Connection ctn=DriverMananger.getConnection(url,user,password); 614 對sql語句進行預編譯 615 String sql="select id,name from student where id=?"; 616 PreparedStatement ps=ctn.prepareStatement(sql); 617 ps.setInt(1,id); 618 獲得結果集 619 ResultSet rs=ps.excutionQuery(); 620 遍歷結果集 621 while(rs.next()){ 622 Int id=rs.getInt("id"); 623 String name=rs.getString("name");} 624 釋放資源 625 rs.close(); 626 ps.close(); 627 ctn.close(); 628 629 113 statement和preparedStatement區別 630 preparedStatement 有預編譯功能,同時將sql語句中參數以占位符方式表示;更安全; 631 632 114 項目中數據庫事務控制你們是怎么做的? 633 聲明式事務管理,事務增強設置事務隔離等級 634 事務注解方式進行自定義事務 635 636 637 115 TreeMap,TreeSet,HashSet實現原理? 638 treeMap中元素怎么排序,如果沒實現comparator接口會怎么樣。序列化作用。 639 hashSet是怎么去重的? 640 641 116 dom4j怎么取節點? 642 將xml文件轉換成樹結構,根據節點找對應的元素/屬性/文本內容,並對它們進行增刪改查 643 644 117 為什么重寫equals方法最好也得重寫hashcode? 645 646 647 118 高並發情況下怎么降低服務器壓力 648 649 650 119 說說hashmap數據結構 651 652 653 120 Lock接口有哪些實現類,說說讀寫鎖。 654 655 121 jdk8有哪些新增功能? 656 657 122 spring bean的生命周期,spring的BeanFactory和FactoryBean有什么區別。 658 659 660 ———————————————— 661 版權聲明:本文為CSDN博主「四兩數字先生」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。 662 原文鏈接:https://blog.csdn.net/Java_stud/article/details/91129735
