JAVA项目面试题Word文件下载.docx

上传人:b****5 文档编号:20067541 上传时间:2023-01-16 格式:DOCX 页数:11 大小:631.71KB
下载 相关 举报
JAVA项目面试题Word文件下载.docx_第1页
第1页 / 共11页
JAVA项目面试题Word文件下载.docx_第2页
第2页 / 共11页
JAVA项目面试题Word文件下载.docx_第3页
第3页 / 共11页
JAVA项目面试题Word文件下载.docx_第4页
第4页 / 共11页
JAVA项目面试题Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

JAVA项目面试题Word文件下载.docx

《JAVA项目面试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《JAVA项目面试题Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

JAVA项目面试题Word文件下载.docx

更新数据时我们读取MasterDataSource,查询数据时我们读取SlaveDataSource。

这种方式很简单,我就不赘述了。

2第二种方式动态数据源切换,就是在程序运行时,把数据源动态织入到程序中,从而选择读取主库还是从库。

主要使用的技术是:

annotation,SpringAOP,反射

7.https怎么在tomcat中配置

8.系统采用什么工作流?

Jbpm

9.贷款项目流程

贷前->

贷中->

贷后

|

贷中具体流程(可以稍微介绍贷前和贷后的流程)

10.项目任务是怎么分配的?

项目经理分配模块

11.负责模块的实现方式方法。

这个就得具体情况具体分析了,比如说你做权限管理,涉及的技术其实就是权限树,Ajax等等,贷后跟踪涉及定时任务,查询征信需要调用第三方接口使用webservice等等。

12.项目中你遇到过什么问题?

是怎么解决的?

这个感觉面试官还是想知道你们的团队协作能力和解决问题的能力,比如说有一个需求自己想了好久还是没有头绪,然后问同事,同事直接告诉我使用一种我没有听过的技术,他简单和我说了一下,然后我就去查资料,然后很快就做出来,所以我觉得团队合作是很重要的。

13.maven 

 

中跳过测试启动的命令

mvninstall-DskipTests=true

14.对你原来公司老大的印象

这个不宜讲太多上个上司的坏映印象,这样会给面试官一种小肚鸡肠的感

15.你知道什么是微服务么?

这就是一个概念,大家都在做,而Martin老头做了一个综述这么写而已。

套路都是一样的,拆分拆分拆分。

毕竟oo范围内搞敏捷的no.1,所以比较有影响力。

但实质上,互联网行业做分布,基本概念不就是这些么?

服务独立无状态,解耦和,可分布,这个就算没人说,大家也这么干啊。

只不过Martin这么总结起了个名字而已。

传统类型的项目比较把整个业务看做一个整体,是偏向于系统开发的。

而所谓的微服务呢,就只关注与具体业务的,只不过从设计上考虑和移植复用和标准化。

举个栗子,搞电商,最早的开发者只分前后台,后来拆分到不同的子系统比如订单、用户、物流、ERP、财务、BI等等,这是第一次的业务拆分。

然后开始流行平台化,对业务拆分的系统有了技术上的要求,统一API,统一标准等。

这个时候大家发现,全部统一解耦无状态后,我不需要业务系统了啊,我把子系统直接更进一步独立成服务啊,比如订单服务,支付服务,物流服务,库存服务等等。

搞双11,订单压力大,再多跑2个订单服务啊。

所以说,所谓微服务,还是没有脱离分布式的思想,最终目标还是奔着无状态可分布去的。

16.微服务架构与SOA架构的比较

17.用过泛型吗

用过,比如说集合中使用泛型,或者父类父接口等等。

18.dubbo是你们架构定的吗

这是分布式框架的一种,后面会有具体介绍,或者网上看看相关的资料,这个一般都是架构定的

19.讲一下zookeeper

Zookeeper是一个分布式框架的注册中心,经常用来作为dubbo的注册中心。

后面会有介绍。

20.会搭tomcat集群吗,

不会,因为我去到公司的时候项目已经在做了,服务器已经搭建好了,不过我有了解过,所谓的tomcat集群部署其实就是解决容错性问题,即使运行过程中哪个tomcat忽然挂掉,但是用户可以访问集群中的其它tomcat服务,可以提供持续的服务。

21.你认为你的优势是什么?

技术上和非技术上的

优势的话需要你自己总结,技术上可以说说你知道的一些比较难的技术要点,或者泛泛而谈,你喜欢专研新的技术,比如说曾经自己利用空闲时间搭建了一个nginx负载均衡服务器,非技术上的你更是很多可以描述的,比如说,可以聊聊自己的兴趣爱好,团队协作能力,沟通能力等等

22.什么是单点登录?

单点登录全称SingleSignOn(以下简称SSO),是指在多系统应用群中登录一个系统,便可在其他所有系统中得到授权而无需再次登录,包括单点登录与单点注销两部分

23.用什么操作的redis

使用Java提供的jedis包提供的一些redis操作类对redis进行操作

24.Git冲突是这么解决的(他希望说出命令,我说用的工具)

Git也是一种版本控制工具,所以和svn基本上差不多,只是命令的话估计都不会很熟悉,通常我们都是借助于eclipse操作的,

25.知道那些前端框架(多答几个比较好)

这里只是问知道,所以听说过的你都说出来,比如说:

DWZ(JUI),Bootstrap,Layui 

react,backbone,angular,Node等等。

26.简单的自我介绍,主要说技术

自我介绍就不需要我多说了吧,我是谁,来自哪里,毕业于***大学,我的上一份工作是做什么的,其中我负责什么模块,用到了一些什么技术等等,重点在于技术

27.高并发的开发经验

高并发的开发经验一般来说没有在大公司接触大型项目,一般都不会有真正的高并发的开发经验的,所以不用慌,你可以说说你自己的看法。

28.hibernate的级联操作

其实级联操作就是表之间的关联关系,在hibernate里面有one-to-one,one-to-many,many-to-many等等关联关系,

29.反射技术的应用

反射可以用来获取对应的类或者类的一些属性或者方法,注解等等,

30.linux的操作,主要还是问集群的搭建

集群的话,可以参考一下linux的redis集群案例:

31.对springboot了解多少

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。

该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。

用我的话来理解,就是springboot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,springboot整合了所有的框架(不知道这样比喻是否合适)。

32.linux命令及上线部署命令熟悉吗?

部署上线的最常用的linux指令及步骤:

1.利用linux指令ls-l, 

cd 

等指令进入相应的存放项目的tomcat目录下面的bin目录,如果该项目是已经在运行的项目,需要关闭系统再重启,关闭系统的linux指令为:

shshutdown.sh

2.关闭测试系统利用cd命令返回,在利用cdwebapps进入webapps这个目录,使用移除指令rm-rfa(a是项目的名字),如果上线的有多个就移除多个,如果只有一个就移除一个

3.将打包后的文件利用FTP上传到Linux服务器上面

3.然后再使用解压命令将你要上线的文件解压出来,命令为unzipa.zip

4.最后再进入tomcat下面的bin目录,使用shstartup.sh&

&

tail-f../logs/catalina.out重启系统,如果后台日志不报错,则显示部署成功

33.单点登录如何实现?

相比于单系统登录,sso需要一个独立的认证中心,只有认证中心能接受用户的用户名密码等安全信息,其他系统不提供登录入口,只接受认证中心的间接授权。

间接授权通过令牌实现,sso认证中心验证用户的用户名密码没问题,创建授权令牌,在接下来的跳转过程中,授权令牌作为参数发送给各个子系统,子系统拿到令牌,即得到了授权,可以借此创建局部会话,局部会话登录方式与单系统的登录方式相同。

这个过程,也就是单点登录的原理

34.dubbo的流程

35.redis如何使用?

Redis场景

前面已经介绍了如何在Redis中存储数据,所以这里理解Books,Authors和Topics这三张表应该不成问题。

但当面对Books-Authors和Book-Topics这种表之间的多对多关联时,问题变得复杂起来。

下面以Topic为例来看如何解决Book与Topic之间的关联,一旦对这个关系清楚了,Book与Author之间的关系也就迎刃而解了。

对于每本book,我们需要知道它属于哪些topics;

同样对于每个topic,也要处理它包含的每本book。

换句话说,对每本book,需要一个存储它所关联的topic的id列表,对于每个topic,同样需要一个存储它关联的book的id列表。

这正是set大展身手的地方。

我们将创建两个sets:

"

book:

id:

topic"

和"

topic:

books"

,前者保存book的topics'

id列表,后者存储topic的books'

id列表。

以前面SQL场景中的数据为例,图书"

ProgrammingErlang"

(books表中的id为2),将有一个key为"

2:

topics"

,value为set类型且数据为(1,3)的数据信息;

而主题"

programming"

则会有一个key为"

1:

,值为(1,2)的数据集。

经过分析,就得出了Redis场景下的数据模型:

可以看出,在SQL中的多对多关联,在Redis中可以通过两个set来实现。

你会发现这种实现相当有用,它给我们提供了一种可以自由获得其他信息的能力:

可以通过对所有感兴趣的"

集合中交集操作,从而获得隶属于多个主题的图书。

例如对集合"

(programming主题)和"

(ruby主题)做交集,会得到只有一个元素

(1)的集合,从而获得id=1的图书:

programmingRuby。

对于这种实现,你必须特别关注对数据的删除操作。

因为topics里有对books的引用,同样books里有对topics的引用,那删除如何操作?

以删除books中的数据为例,首先想到的是要删除每个key为"

*"

的数据,但执行此操作前需要先遍历topics中的所有key为"

的集合,并从中删除待删除图书的id,当然也要从books中key为"

list"

的列表中删除此id。

如果想删除一个topic,操作也很类似:

从topics中删除所有key为"

信息之前,需要先遍历books中的key为"

books:

的topicid集,并从中删除待删除topic的id,同时从"

列表中也删除此id。

同样的操作对于authors一样适用。

36.activeMq你是如何使用的,实现什么功能

1.紧耦合应用系统存在许多问题,但是,要将紧耦合系统重构成松耦合系统是一件值得但比较繁琐的事情。

使用松耦合的主要优势体现在将同步改为异步。

使用异步通信,应用程序将从接收者反馈的等待中解放出来,其他的任务可以得到执行,这样提高了应用程序的效率。

2. 

3.只要是两个应用程序间需要通信的情况,都可以考虑使用JMS,不论这种通信是在本地的(就是通信的两个应用程序在同一台主机上),还是分布在不同机器上。

尽管是在同一个主机上的两个应用程序需要通信也可以使用ActiveMQ。

ActiveMQ可以确保消息投递成功并采用异步方式通信。

4. 

5.多个需要通信的应用程序在同一个机器上的情况下,您可以考虑在执行机上独立运行ActiveMQ或者将ActiveMQ嵌入到Java应用服务中。

无论采用哪种方式,都可以确保应用程序能够发送和接收消息。

您可以选择订阅模式(pub/sub)或者采用PTP(point 

to 

point)模式,这两种模式都无需等待执行反馈信息。

每一个应用程序都可以简单的将消息发送给ActiveMQ,然后继续做其他的工作;

应用程序无需阻塞式等待消息的返回。

6. 

7.对于分布在多台主机上的应用程序来说,可以使用多种布置策略。

主要包括单一ActiveMQ实例和多ActiveMQ实例。

单一ActiveMQ实例是一个简单解决方案。

所有的应用程序都向同一个ActiveMQ中介发送和接收消息,这与上面提到的单机多服务雷同。

单一的ActiveMQ可以布置到一台单独的主机上,也可以和其中的一些服务布置在一起。

重要的是,所有的应用必须能够直接与ActiveMQ中介进行交互,所以,你必须考虑到你的网络设计。

8. 

9.第二种情况比较复杂,但是有ActiveMQ来负责远程通信,而不是应用程序自身。

在这种场景下,每一个应用程序都会实例化一个ActiveMQ(无论是嵌入式的还是独立式的),应用程序从其本地的ActiveMQ发送和接收消息。

之后这些ActiveMQ实例将会以一种联合的方式协同工作。

消息将会基于每一个应用的要求在多个ActiveMQ中介间传递到远程的处理者。

在ActiveMQ中,这种模式被称为netWork 

of 

brokers。

采用这种模式对于处理大量的ActiveMQ消息是可行的,但是,我们往往需要减轻网络拓扑的复杂性,这样直接将消息投递到远程接收者的ActiveMQ是不可行的。

在后一种情况下,不同的协议使用可以使ActiveMQ更轻松的传递消息。

37.fastDFS是什么?

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:

文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。

特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

38.使用fastDFS存在的弊端

FastDFS没有对文件做分块存储,因此不太适合分布式计算场景。

39.秒杀怎么解决?

  1、前端三板斧【扩容】【限流】【静态化】

  2、后端两条路【内存】+【排队】

40.Tomcat如何进行工程部署?

41.只有一件商品,几个人同时抢购如何处理?

做并发处理,在抢购方法的前面加入synchronized关键字,然后在方法体里去检查是否已经被抢购,这是最简单的并发处理了。

42.订单退货流程你是怎么处理的?

不要陷入误区了,认为售后状态必须反映到订单上(发货前的售后问题另说);

结论:

退货与订单是需要分开建立流程的,如果需要将售后状态显示在订单上,数据结构上也只是个关联查询。

销售订单是反映顾客从下单到收到包裹再评价的全过程,只要顾客确认收货就是交易完成。

如果收货后需要全部退货、部分退货、仅退款、换货、维修,那也是单独的售后单,不影响原销售订单的。

更何况是做财务优化,那这两部分就更得分开的,销售数据与退款数据是需要按各自时间维度单独分开的,例如根据上月交易完成时间算销售额是多少,根据售后退款时间算退款多少。

43.接口是怎么提供的?

可以通过webservice把接口暴露出去

44.怎么处理session共享的问题?

(1)Tomcat的session复制,可以实现session共享

优点:

不需要额外开发,只需搭建tomcat集群即可

缺点:

tomcat是全局session复制,集群内每个tomcat的session完全同步(也就是任何时候都完全一样的)在大规模应用的时候,用户过多,集群内tomcat数量过多,session的全局复制会导致集群性能下降,因此,tomcat的数量不能太多,5个以下为好。

(2)session绑定

当用户A第一次访问系统时,tomcat1对其进行服务,那么,下次访问时仍然让tomcat1对其进行服务

(3)使用redis集中管理session

可以将用户的会话保存在redis中,每次从redis中查询用户信息,就可以很好的解决会话共享问题。

45.Linux查看CPU状态的命令,编辑文档的命令,vi和vim的命令

46.同步锁是什么,不同步的又是什么?

怎么实现的

首先你要明白一点,要想避免数据race,必须有同步!

其实还是加了锁的。

lockfree只是让应用开发者避免自己加锁。

比如cas的load和store就是同步的,对硬件使用了lock原语,或者是基本内存操作,比如32位,64位等。

或者是锁总线,还有可能是锁缓存。

这是一种粒度很小的锁。

避免加锁的方法?

先考虑线程之间需不需要同步,不需要的话就threadLocal,每个线程保存一个副本。

再看共享资源是不是只有简单的读写操作。

java中volatile是happenbefore的。

简单的读写是同步的,可以用上。

或者使用原子操作,比如atomic<

T>

再比如,对于读写操作,可以考虑读写锁,增加读的吞吐量。

还有一些高级的设计,比如常用的hashmap,java中为了效率设计了ConcurrentHashMap。

分段加锁,这样读写操作不用对整个表加锁。

读非常多,写很少的情况,可以考虑copyonwritearraylist这种方法,读不加锁,写就复制一个新的arraylist。

多线程编程,同步不可避免,锁是跑不掉的。

你要想尽办法减少锁的粒度,根据具体需求进行取舍。

47.单点登录跨域,包括多个根域名间的解决方案

48.请求安全性验证(token,动态头信息等)

Token一般用在两个地方:

1)防止表单重复提交、

2)anticsrf攻击(跨站点请求伪造)。

49.数据库读写分离方案

对于数据存储层高并发问题,最先想到的可能就是读写分离,在网站访问量大并且读写不平均的情况下,将存储分为master,slave两台,所有的写都路由到master上,所有的读都路由到slave上,然后master和slave同步。

如果一台salve不够,可以加多台,比如一台master,3台slave。

对于什么是读写分离,以及读写分离有什么好处,这里不再叙述,有兴趣的可以参考这里 

在设计读写分离的时候,有几种解决方案:

 

1.将读写分离放在dao层,在dao层, 

所有的insert/update/delete都访问master库,所有的select都访问salve库,这样对于业务层是透明的。

2.将读写分离放在ORM层,比如mybatis可以通过mybatisplus拦截sql语句,所有的insert/update/delete都访问master库,所有的select都访问salve库,这样对于dao层都是透明。

3.放在代理层,比如MySQL-Proxy,这样针对整个应用程序都是透明的。

50.导出报表时,有没设计字段的选择,如果你来做,怎么处理用户选择需要的字段进行报表数据导出?

可以在前端给他一个选择字段的按钮,然后查询的时候把字段都查询出来

51.你印象最深的项目时哪个?

为什么?

你可以说个你业务流程最清晰的或者最近这个,这样你就可以说的出来很多东西,原因可以说很多,比如说业务一开始不清晰,或者有个功能要用到的技术没见过,但是时间也紧迫,你是怎么完成的等等。

52.分布式-soa系统,web工程调用服务工程,如何保证数据的一致性?

53.了解App编程吗?

虽然没做过,但是还是有一定的了解的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1