架构师面试问题-程序员宅基地

技术标签: 软件工程  

架构师面试问题:

如何设计高可用

如何设计高并发

如何设计高扩展

 

如何jvm调优及管控

 

如何复用及重构

1、使用那些设计模式解决生产中的问题

2、架构选型过程考虑

3、如何保证开发的代码质量实践及减少生产问题

4、如何保证稳定性,99.98%

5、如何定位及处理OOM,及减少OOM

QPS ,TPS 

 

1、String类为什么是final的

String的值不可变aaa,修改值bbb后,string新开辟一个内存空间存储新值bbb,保证其他已经指向aaa的string不用改变,保证效率及安全,string的定义在stack中,值在heap中

 

2、HashMap原理

HashMap的底层主要是基于数组和链表来实现的,它之所以有相当快的查询速度主要是因为它是通过计算散列码来决定存储的位置

解决hash冲突的方法有很多,HashMap底层是通过链表来解决hash冲突的。

https://www.jianshu.com/p/9f7f851bd17f

3、@Autowired和@Resource的区别是什么?

@Autowired功能虽说非常强大,但是也有些不足之处。比如:比如它跟spring强耦合了,如果换成了JFinal等其他框架,功能就会失效。而@Resource是JSR-250提供的,它是Java标准,绝大部分框架都支持。

https://www.zhihu.com/question/39356740

@Autowired注解,是用来自动装配对象的,通过Bytype方式,要求针对相同类型的对象只有一个的情况

@Resource  是用来自动装配对象的,通过Byname方式

  • @Autowired默认按byType自动装配,而@Resource默认byName自动装配。
  • @Autowired只包含一个参数:required,表示是否开启自动准入,默认是true。而@Resource包含七个参数,其中最重要的两个参数是:name 和 type。
  • @Autowired如果要使用byName,需要使用@Qualifier一起配合。而@Resource如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。
  • @Autowired能够用在:构造器、方法、参数、成员变量和注解上,而@Resource能用在:类、成员变量和方法上。
  • @Autowired是spring定义的注解,而@Resource是JSR-250定义的注解。



作者:苏三说技术
链接:https://www.zhihu.com/question/39356740/answer/1907479772
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

4、@ComponentScan作用

@ComponentScan如果不设置basePackage的话 默认会扫描包的所有类,所以最好还是写上basePackage ,减少加载时间。默认扫描**/*.class路径 比如这个注解在com.first.springbootproject.springboot 下面 ,那么会扫描这个包下的所有类还有子包的所有类,比如包com.first.springbootproject.springboot.helloworld的应用。

5、@SpringBootApplication 启动类

使用替换

  • @Configuration(@SpringBootConfiguration点开查看发现里面还是应用了@Configuration)
  • @EnableAutoConfiguration
  • @ComponentScan

如果在启动类使用这个三个注解,整个SpringBoot应用依然可以与之前的启动类功能一样。但每次写这3个比较啰嗦,所以写一个@SpringBootApplication方便点。

6、循环依赖问题

如果A依赖于B,B依赖于C,C又依赖于A,这样就形成了一个死循环。

spring的bean默认是单例的,如果单例bean使用@Autowired自动装配,大多数情况,能解决循环依赖问题。

但是如果bean是多例的,会出现循环依赖问题,导致bean自动装配不了。

还有有些情况下,如果创建了代理对象,即使bean是单例的,依然会出现循环依赖问题。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/charry0110/article/details/117691191

智能推荐

详解活动图计算关键路径、最早开始时间、最晚开始时间、冗余时间,C++ 程序实现_活动图最早开始时间-程序员宅基地

文章浏览阅读2.6w次,点赞49次,收藏110次。题目下图是一个软件开发项目的活动图,对于图中每条边的数字表示完成这条边代表的活动的天数。例如,完成终止于里程碑E的活动需要 4 天时间。对于每个活动,列出它的前驱,并计算最早开始时间、最晚开始时间和时差,然后确定出关键路径。—— 《软件工程 第 4 版》中的原题写文缘由网上的文章大都是对于 “点” 求最早开始时间和最晚开始时间。在我看来,是不准确的。对于边的解法,有的写得又太复杂,还是自己写吧。误区在哪需要注意的是,图中的点,并不代表活动,并不能说活动 AAA 用 333 天到达活动 _活动图最早开始时间

Windows环境下通过Xshell发送文件到远程Linux主机_windows环境变量可以发给linux 通过xming-程序员宅基地

文章浏览阅读278次。windows与linux之间的中小型文件传递可以使用sz、rz命令来实现sz:将linux主机中选定的文件发送到windows主机。rz:执行该命令会弹出一个文件选择窗口,从windows主机选择文件发送到linux主机。首先检查linux主机上有没有安装lrzsz。如果已按照会显示按照的版本,如果没有安装不会有任何显示。(以下为已安装)[root]# yum list i..._windows环境变量可以发给linux 通过xming

CDH页面中Oozie的调度告警邮箱设置_cdh+oozie-程序员宅基地

文章浏览阅读725次。CDH页面中Oozie的调度告警邮箱设置1. 开启SLA2. smtp设置3. Hue中,对Workflow任务进行设置4. 设置收件邮箱,结束时间可根据任务时长修改,其他可以默认yyyy-MM-dd’T’HH:mm+0800标定时间2021-06-27T00:00+08005. 邮件通知内容..._cdh+oozie

Python 统计字典中key value 的最大值,最小值,以及统计key value的个数等_c# dictionary查找value最少的数量-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏28次。1.字典:参考:https://www.runoob.com/python/python-dictionary.html键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。dict = {'a': 1, 'b': 2, 'b': '3'}print(dict['b'])print(dict)后面的会替换前面的:如上结果:'b': 2,被 'b': '3'替换,..._c# dictionary查找value最少的数量

验证计算机名出现一般性网络错误,一般性网络错误请检查网络文档-程序员宅基地

文章浏览阅读3.1k次。SQL codeMicrosoft][ODBC SQL Server Driver][TCPIP Sockets]一般性网络错误。请检查网络文档SQL Server连接中的四个最常见错误:一. "SQL Server 不存在或访问被拒绝 "这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多.一般说来,有以下几种可能性:1,SQL Server名称或IP地址拼写有误2,服务器端网络配置有误..._error(msg:[microsoft][odbc sql server driver][tcp/ip sockets]connectionwrite

[AMBA]AXI原子操作(AXI Atomic Operation)-程序员宅基地

文章浏览阅读4.3k次,点赞2次,收藏25次。AXI原子操作(AXI Atomic Operation)。​原子操作就是不可中断的一个或者一系列操作, 也就是不会被线程调度机制打断的操作, 运行期间不会有任何的上下文切换(context switch)。我们为什么要关注原子操作呢?如果确定某个操作是原子的, 就不用为了去保护这个操作而加上会耗费昂贵性能开销的锁,借助原子操作可以实现互斥锁(mutex),借助互斥锁, 可以实现让更多的操作变成原子操作。 前言:一、原子操作的基本概念..._axi原子操作

随便推点

Jenkins拉取Gitlab项目代码配置SSH Keys步骤_jenkins git ssh key-程序员宅基地

文章浏览阅读7.3k次,点赞3次,收藏10次。Jenkins容器生成秘钥进入目录:cd ~/.ssh如果没有该目录就创建:mkdir -p ~/.ssh生成秘钥:ssh-keygen -t rsa -C “登录gitlab的邮箱”查看对应的ssh-keyjenkins@f050d7fa04f0:~/.ssh$ lsid_rsa id_rsa.pubid_rsa.pub:公钥,复制到gitlab平台配置ssh-keyid_rsa:私钥,复制到jenkins平台配置jenkins凭据拷贝id_rsa.pub到gitlab配置ssh-_jenkins git ssh key

使用git命令时,系统报错:bash: git: command not found...-程序员宅基地

文章浏览阅读6.9k次。使用git命令时,系统报错:bash: git: command not found…原因:服务器没有安装git导致系统报错解决方法:(Centos7)yum install -y git 执行命令安装git后即可解决_bash: git: command not found...

如何查看SAP表变更记录_sap ps 项目更改记录查询-程序员宅基地

文章浏览阅读2.2k次。在运维的过程中,我们有时需要去追踪一些表的变更记录,如采购订单的单价更新,采购订单的入库标识何时更新等,以便我们可以更快的追踪定位到问题所在,本章给大家介绍下如何追踪系统中表的变更记录。根据表名获取更改文档对象,表:TCDOB。_sap ps 项目更改记录查询

超链接打不开是什么原因html,超链接打不开是什么原因-程序员宅基地

文章浏览阅读2.4w次。演示工具:电脑型号:华硕adolbook14 2020系统版本:windows10具体原因及解决方法:1、如果是链接到本地文件的超链接无法打开,可能是相对路径和绝对路径的问题,绝对地址,是有完全的路径,如果超链接的路径写错了,就无法打开。2、检查一下被链接的文件是否被改变了存储位置,如果是,需重新设置一次。3、如果链接的是局域网上其它电脑中的文档,可能是被链接的电脑网络设置出了问题,先检查能否链接...

搭建网站服务基于openlab_那些可以在openlab网站获得支持-程序员宅基地

文章浏览阅读156次。1.基于域名www.openlab.com可以访问网站内容 welcome to openlab。#mount /dev/sr0 /mnt#yum install httpd -y2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student网站访问学生信息,www.openlab.com/data网站访问教学资料,www.openlab.com/money网站访问缴费网站。(1)学生信息网站只能song和tian两个人访问,其他用户不_那些可以在openlab网站获得支持

idea常用插件_idea打印sql语句插件-程序员宅基地

文章浏览阅读1.9k次。当我们在写代码的时候,其实很多基础的代码都可以直接生成的,个人比较喜欢用easycode,该插件可以自己自定义生成基础的增删改查,有提供的模板,但个人建议最好还是自己写个模板,能符合自己的项目。定制性更强,而且该代码能直接生成到项目中选择连接的数据库,右击使用。_idea打印sql语句插件

推荐文章

热门文章

相关标签