分享面试经历的网站,腾讯大牛教你自己写Java框架!

程序小茉莉 2021-09-15 05:58:33
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://blog.51cto.com/u_15302281/3888045

  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