分享面試經曆的網站,騰訊大牛教你自己寫Java框架!

程序小茉莉 2021-09-15 06:07:27
分享 大牛 教你 java 框架


1、上下文切換

上下文定義

cpu發生進程或者線程切換時,所依賴的數據集合,比如一個函數有外部變量,函數運行時,必須獲取外部變量,這些變量值的集合就是上下文。

引發問題

對於CPU密集型任務,多線程處理會發生上下文切換,會影響到執行速度,如果時IO密集型,多線程技術優點盡顯。

如何减少上下文切換

  • 無鎖並發編程,鎖的獲取與釋放會發生上下文切換,多線程時會影響效率。無鎖並發編程就是將數據分塊,每個線程處理各自模塊。比如LongAdder中部分代碼。
  • CAS算法,並發編程時通過CAS算法更新數據,而不必加鎖。如Java的atomic包下的工具類。
  • 使用最少線程,减少不必要的線程創建,自定義線程池。
  • 使用協程,在單線程中維護多任務調度,處理任務間切換,Golang對於協程的使用很强大。

2、死鎖

死鎖定義

死鎖是進程死鎖的簡稱,是由Dijkstra於1965年研究銀行家算法時首先提出來的。
系統發生死鎖現象不僅浪費大量的系統資源,甚至導致整個系統崩潰,帶來灾難性後果。

分享面試經曆的網站,騰訊大牛教你自己寫Java框架!_後端

產生死鎖原因

  • 系統資源不足
  • 進程推進順序不當
  • 資源分配不合理

死鎖產生的必要條件

  • 互斥條件:一個資源只能被一個進程或者線程使用。
  • 請求和保持條件:一個進程或者線程,請求資源的時候發生阻塞,對已經獲取的資源保持不放。
  • 不可剝奪條件:進程或者線程以獲得的資源,在未使用完成時,不能强行剝奪。
  • 循環等待條件:若幹進程或者線程形成一種頭尾相接的循環等待的資源關系。

這四分條件是死鎖產生的必要條件,只要發生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發生死鎖。

如何避免死鎖

  1. 以確定的順序獲得鎖
  2. 加鎖時限

Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,該方法可以按照固定時長等待鎖,因此線程可以在獲取鎖超時以後,主動釋放之前已經獲得的所有的鎖。

最後

無論是哪家公司,都很重視基礎,大廠更加重視技術的深度和廣度,面試是一個雙向選擇的過程,不要抱著畏懼的心態去面試,不利於自己的發揮。同時看中的應該不止薪資,還要看你是不是真的喜歡這家公司,是不是能真的得到鍛煉。

針對以上面試技術點,我在這裏也做一些資料分享,希望能更好的幫助到大家。

 CodeChina開源項目:【一線大廠Java面試題解析+核心總結學習筆記+最新講解視頻】

分享面試經曆的網站,騰訊大牛教你自己寫Java框架!_後端_02

分享面試經曆的網站,騰訊大牛教你自己寫Java框架!_Java_03

分享面試經曆的網站,騰訊大牛教你自己寫Java框架!_Java_04

版权声明
本文为[程序小茉莉]所创,转载请带上原文链接,感谢
https://javamana.com/2021/09/20210915055829945D.html

  1. Open source: Suzhou tourism strategy based on pyecharts visual analysis
  2. 從底層開始帶你了解並發編程,五步搞定Java開發環境部署,
  3. 以商品超卖为例讲解Redis分布式锁,一招彻底帮你搞定HashMap源码,
  4. 从青铜到王者的路线,2021Java者未来的出路在哪里?
  5. JavaScript Advanced Programming (3rd Edition) Reading note 6
  6. 從青銅到王者的路線,2021Java者未來的出路在哪裏?
  7. Quelle est la voie à suivre pour les 2021 Java du bronze au roi?
  8. Prenez l'exemple de la surproduction de marchandises pour expliquer redis Distributed Lock, un tour complet pour vous aider à résoudre le code source de hashtap,
  9. 以商品超賣為例講解Redis分布式鎖,一招徹底幫你搞定HashMap源碼,
  10. Win10系统 java环境配置
  11. Non-ASCII character ‘\xe5‘ in file kf1.py on line 4, but no encoding declared; see http://python.or
  12. 手把手教你搭建微信小程序服务器(HTTPS)
  13. JavaScript Review sketch - 1
  14. sqli-labs-less-18 http头user agent+报错注入
  15. Git下载、安装、配置、配合Intellij Idea实现代码版本控制
  16. NHibernate inheritance
  17. Summary of basic knowledge points of JavaScript language (mind map)
  18. GIT télécharge, installe, configure et implémente le contrôle de version de code avec intellij idea
  19. Sqli Labs - less - 18 http header user agent + Error Reporting Injection
  20. Vous apprendrez à construire un serveur d'applet Wechat (https) à la main
  21. Non - ASCII character 'xe5' in file kf1.py on Line 4, but no Encoding declared;Voirhttp://python.or
  22. 作为一名程序员我不忘初心,Java最新实习面试经验总结,
  23. 作为一名Java面试者你应该知道的,2021最新Java常用开源库总结,
  24. 作为一个程序员,你觉得最大的悲哀是什么,2021年大厂Java岗面试必问,
  25. Configuration de l'environnement Java du système win10
  26. 作為一個程序員,你覺得最大的悲哀是什麼,2021年大廠Java崗面試必問,
  27. En tant que programmeur, quelle est la plus grande tristesse que vous ressentez? L'entrevue d'emploi Java de 2021 dans une grande usine vous demandera:
  28. Comme vous devriez le savoir en tant qu'intervieweur Java, 2021 dernier résumé des bibliothèques open source couramment utilisées pour Java,
  29. En tant que programmeur, je n'oublie pas le dernier résumé de mon expérience d'entrevue de stage en Java.
  30. 作為一名Java面試者你應該知道的,2021最新Java常用開源庫總結,
  31. New feature of Java 8. Stream (). Map (general programming method: collect. Groupingby)
  32. Computer graduation project java + SSM hospital registration system
  33. 作為一名程序員我不忘初心,Java最新實習面試經驗總結,
  34. 使用Docker部署Spring-Boot项目,论程序员成长的正确姿势,
  35. Conseils pour améliorer l'efficacité du Code Java mille fois
  36. 全网首发,我在华为做Java外包的真实经历!
  37. 全套Java视频百度云,终于找到一个看得懂的JVM内存模型了,
  38. 入职3个月的Java程序员面临转正,字节跳动 京东 360 网易面试题整理,
  39. Docker tutorial series (I) introduction to docker tutorial spring cloud mybatis distributed microservice Cloud Architecture
  40. 全網首發,我在華為做Java外包的真實經曆!
  41. Lancement de l'ensemble du réseau, je fais l'expérience réelle de l'externalisation Java à Huawei!
  42. Run around with money? Li Weijia fell into the storm of endorsement! In the face of collective hot discussion, personal attitude has become the focus of attention
  43. 全套Java視頻百度雲,終於找到一個看得懂的JVM內存模型了,
  44. Un ensemble complet de vidéos Java Baidu Cloud a finalement trouvé un modèle de mémoire JVM compréhensible.
  45. Déployez le projet Spring Boot avec docker, et parlez de la bonne posture pour que les programmeurs grandissent.
  46. 关于网络优化你必须要知道的重点,GC 堆排 Tomcat 算法题,
  47. 关于电商秒杀系统中防超卖处理方案简述,Java开发热门前沿知识,
  48. Les programmeurs Java qui sont entrés dans l'entreprise pendant trois mois ont dû faire face à une correction d'échelle, et les octets ont sauté dans le traitement des questions d'entrevue de JD 360 Netease.
  49. What is the new syntax of XX ≠ null in Java?
  50. Spring scheduled task cron expression (@ scheduled)
  51. Une brève description du plan de traitement anti - surproduction dans le système d'arrêt du commerce électronique et les connaissances de pointe du développement Java.
  52. Ce que vous devez savoir sur l'optimisation du réseau, c'est que le problème de l'algorithme Tomcat de gerbage GC,
  53. 凭借这份Java面试题集,成体系化的神级Java进阶笔记,
  54. 凭借这份Java面试题集,BAT大厂面试基础题集合,
  55. Docker Knowledge point collation
  56. Redis sur la réalisation élégante des tâches retardées
  57. 憑借這份Java面試題集,BAT大廠面試基礎題集合,
  58. Avec cet ensemble de questions d'entrevue Java, l'ensemble de questions de base d'entrevue de bat,
  59. Avec cet ensemble de questions d'entrevue Java, les notes avancées Java de niveau divin sont systématisées,
  60. Android Architect path 21 Responsive Programming RX Java thread transformation Principles