最近去了幾家公司面試java中高級工程師,打擊挺大的,感覺自己一直以來沒有很好的深入學習,對各種知識都是一知半解,但心又太高,想找更高薪的職位,結果面試屢屢碰壁,哎,心情好低落,也是時候靜下心來,好好總結一下了,準備開個博客,記錄一下以前用過的技術、開發經驗等,也用來總結一下將來的學習和工作經歷。
一、為什么要用線程池,為什么不直接使用thread.start的方法,線程池用的是哪個類
線程池的優點:
第一:降低資源消耗。通過重復利用已創建的線程降低線程創建和銷毀造成的消耗。
第二:提高響應速度。當任務到達時,任務可以不需要等到線程創建就能立即執行。
第三:提高線程的可管理性。線程是稀缺資源,如果無限制的創建,不僅會消耗系統資源,還會降低系統的穩定性,使用線程池可以進行統一的分配,調優和監控。
線程池的類為:ThreadPoolExecutor
二、項目為什么要用spring,而不是使用new的方式創建實例
容器:Spring是個容器,因為它包含并且管理應用對象的生命周期和配置。如對象的創建、銷毀、回調等。同時對象之間的依賴關系交給Spring,降低組件之間的耦合性。
框架:Spring作為一個框架,提供了一些基礎功能,(如事務管理,持久層集成等),使開發人員更專注于開發應用邏輯。
三、Redis的數據類型有什么
字符串(Strings),字符串是Redis值的最基礎的類型。
列表(Lists),List列表是簡單的字符串列表,按照插入順序排序
集合(Sets),集合(Set)是一個無序的字符串集合
哈希(Hashes),Hashes是字符串字段和字符串值之間的映射,因此他們是展現對象的完美數據類型。
有序集合(Sorted Sets),有序集合與普通集合非常相似,是一個沒有重復元素的字符串集合。
四、redis服務掛掉之后怎么辦
這個應該涉及到集群、主從數據庫復制方面的,具體怎么樣不是太懂。
五、單表大數據量如何優化查詢
1、 優化索引
2、 使用oracle查詢分析器,對sql語句進行分析優化(不使用in等語句 ,子查詢改成連接查詢等)
3、 建立分區
4、 按業務需求或按自動的枚舉值進行分表
5、 使用nosql數據庫,MongoDb 、Redis
六、tomcat 最多支持并發多少用戶?
server.xml中配置,一般受制于服務器硬件性能和操作系統連接數,tomcat沒有限制并發數,但并發數太多會丟連接,默認是150個
七、如何解決大并發訪問
1、 頁面靜態化,動靜態頁面項目分離部署
2、 是數據庫的調優,包括做數據庫集群,使用nosql數據庫/內存數據庫
3、 使用集群技術,利用apache、nginx等反向代理服務器實現負載均衡。
八、如何處理需求變更
1、軟件的需求階段,就要把項目各方面的需求盡量考慮得清晰詳盡,最大限度的減少將來可能存在的需求變更
2、項目實施階段,建立正規的需求變更流程,文檔化管理,有備可查,有據可依,過濾不合理的需求,減少需求的來源,
3、嚴重影響項目進度或成本或目標的需求變更,需重新立項審批通過才予以執行。
九、軟件項目失敗的原因
首先項目是項目失敗的定義是什么
1、是項目嚴重超時,不能交付
2、是項目不符合需求
3、項目的某些指標達不到要求,例如性能
原因:
1、 沒有充分地剖析項目,對每個功能進行細分和分析,估算工作量和工作難度
2、 項目范圍變跟,需求變跟過多,導致項目延期
3、 項目組人員沒有足夠的技術水平去解決項目遇到的技術難題
4、 項目經理的風險識別和管理能力。項目經理能不能及時地發現項目中存在的問題,和發現問題后如何解決問題的經驗
-
工程師
+關注
關注
59文章
1569瀏覽量
68504 -
JAVA
+關注
關注
19文章
2966瀏覽量
104703
發布評論請先 登錄
相關推薦
評論