java分布式面试
『壹』 java程序员面试时被问到:如何在j2ee项目中处理高并发量访问 该怎么回答 请仔细看题干再回答
你好,来高并发系统的设计需源要注意一下几点:
尽量使用缓存,包括用户缓存,信息缓存等,多花点内存来做缓存,可以大量减少与数据库的交互,提高性能。
用jprofiler等工具找出性能瓶颈,减少额外的开销。
优化数据库查询语句,减少直接使用hibernate等工具的直接生成语句(仅耗时较长的查询做优化)。
优化数据库结构,多做索引,提高查询效率。
统计的功能尽量做缓存,或按每天一统计或定时统计相关报表,避免需要时进行统计的功能。
能使用静态页面的地方尽量使用,减少容器的解析(尽量将动态内容生成静态html来显示)。
解决以上问题后,使用服务器集群来解决单台的瓶颈问题。
基本上以上述问题解决后,达到系统最优。
至于楼上有人提到别用JAVA来做,除非是低层的连接数过大(如大量的端口占用需求),这种情况下考虑直接C来写,其他的可以用JAVA来做。
『贰』 如何通过java的面试
第一,不管你基础只是牛逼不牛逼,看一看java面试题是有必要的,Java面试题有笔试部分和面试部分,首先内你笔试得过吧
第二,面容试,就谈谈自己学了些什么东西之类的,然后再说说自己是个认真好学的好娃娃,其次,有工作经验的就谈谈之前做了些什么,应届毕业的话就谈谈之前在学校做了什么项目,比如图书馆管理系统,就跟他扯,扯也要扯你知道的,不知道的能扯就扯,扯不了的就打住
『叁』 java 二面一般会面试什么内容
Java程序员应聘一般要经过笔试和面试。作为一个技术人员,特别是刚出道的,笔试的成绩是比较重要。以下是我经过几次笔试总结的一些经验教训。
一般来说,试题会分为三个部分,Java基础、数据库基础和综合题。
首先是Java基础,这个很简单,也就是考考你对Java语言本身的理解,包括语法,类库的使用等。有选择题,也会有写代码题。写代码的时候认真仔细就是了。基础题答案一般都比较死,所以尽量不要错。在这,出一道我遇到的题考考大家,Java编程:把American,Japan,China,France,Brazil按英文字母排序。说说思路就行了:)
其次是数据库。准确的说,考的不是数据库,而是SQL语句。一般题型是,给两三个表,然后让你根据需求写SQL。最普通的就是学生表、选课表和成绩表。要掌握的就是连接查询,还有就是一些函数(建表、表操作等就不说了哈)。其实这些都相当简单,但是往往被新手忽略。我就遭过,因为有半年没写过SQL了,连接查询搞忘完了,有两次笔试都空起,结果可想而知。这些是必备技术,千万不能空起啊!
然后是综合题。之所以说是综合题,是因为包含的内容比较多,一般都是主观题。这里,人家是想看看你对Java高级技术以及周边技术的了解程度和运用能力,说白了,就是考概念和考应用题。这里说的Java高级技术,也就是J2EE架构中的技术,这些不会的话,人家是不得要你的。如果你会一些流行的技术框架,那就更好了。所谓Java周边技术,包括HTTP,HTML,XML,UML,JavaScript,CSS等,要求一般不是很高,要了解,比如让你用HTML写个表单你要会。关于刚才提到的技术或者框架,希望要了解其工作的原理和机制,一般要考,比如让你说说Struts的MVC。关于应用题,可能出一道网络应用来考。
以上就是我笔试的经验,一般是这样,不过我也遇到过变态的。一次笔试,就被彻底甩翻,C/C++、数据库、Java技术、Shell编程、网络协议、Unix、软件工程全部上了。
如果笔试做的好,那就成功大半了,不过不要轻视面试哦!
『肆』 通常java的面试都会问些什么
首先,你先向面试官自我介绍一下。
我:“我做过两个项目。写过几篇论文和专利。还参加过XX大数据竞赛。同时,出于个人兴趣,我还阅读了一下xxxx的少部分源码,理解了一下xxxx的核心思想,实现了一个功能非常简单,并且还不完善的xxxx。”
有可能刚开始,还是讨论比赛和分布式。后面就会问你一道大量文本处理的问题,例如“找出一个大文本中的Top3的字符串”,没有做过这方面的研究。
Java问题:“讲一下JVM的结构。”
网络问题:“TCP/IP的三次握手、四次挥手”
问关于JavaWEB的问题。
或者是“淘宝用户的数据(购物车……)存在那里?怎么满足高并发?”
问一下你的算法问题“输入两个整型数组,返回一个数组:两个数组中的公共值。”
“考一下你对递归的掌握。写一个函数,输入int型,返回整数逆序后的字符串。如:输入123,返回“321”。 要求必须用递归,不能用全局变量,输入必须是一个参数,必须返回字符串。”
问完之后可能会说“就当做我们在聊天,讨论技术问题。讲一下你的相关经历吧。“
这时候你就可以很轻松地在聊比赛相关的事情,以及自己对数据的理解。
总结:
对于,基础比较扎实的人,那就让面试官随便问吧。不过,我觉得任何人都有可能别问死的,因为他们想通过这种方式看看你的掌握深度。
如果只是基础知识一般:数据结构、排序算法和递归,能写出来;操作系统,懂一些基本理论;计算机网络,懂一些基本概念和理论。就必须要充分发挥自己的竞赛、项目、论文和专利的优势了。
面试过程中,有一点很重要,把握面试官的兴趣点,并将面试官带入自己的优势。当然,如果自己的优势不是面试官非常了解的领域,但是面试官又比较感兴趣,那就更好了。最好能把面试官带入你的话题中,让他对你产生兴趣,然后,大部分时间就都可以花在在讨论这些内容了。
可以肯定的说,JAVA目前的就业还是很紧缺。总体来看,就业岗位有的是,要就业的JAVA人才也很多,但是目前大多数求职者的水平与就业岗位的要求有一定的差距,所以目前的JAVA求职者很有必要提升自己。我和一群java的爱好者创建的一个免费学习的qun,开头的三个数字是四二六,中间的三位数就是三九六,最后面的三位数就是二八四。你可以与java爱好者共同学习和交流经验。无论是从技术上,还是从实际工作的执行上,都要提升,这样才能从众多的从业人员中脱颖而出。成为领高薪资,有高职位的人上人。
如果你还没有足够的勇气去面试,觉得自己的能力还达不到企业的高水平要求,可以来一起交流一下。
总而言之,把自己的优势发挥到极致。祝你面试成功!
『伍』 跪求java面试高手分享面试时怎么做项目描述
目测楼主是新手吧?如果有丰富的经验就不会这么问了。那拿我当初的例子和楼至分享下吧,不一定精彩,希望对你有帮助。
刚开始缺乏项目经验的时候都是很不自信的,面对面试官难免忐忑。我当时没学过java,做了个邮件发送也是抄的。但是面试个时候还要小小装一下。
第一点就是不要太夸大自己,实事求是,挑自己明白的地方说,如果太夸大自己了会给对方过高的期望值,如果对方是技术人员,那么多问几个深入的问题咱就露出马脚了,这样会使对方反感。
第二点面试之前你要把你做过的项目好好研究一下,尽量多懂一些,如果时间不充足的话就只针对你做过的项目,挑自己做的部分或者能当做自己创新的部分和面试官说,最好能有个人见解。如果有哪些地方不明白也可以坦白说,比如某某技术还不是太懂,准备继续研究,给人感觉你很诚实,而且有上进心。
第三就是突出优势,引导面试官问你熟悉的或者已准备的问题,比如我当时会的c语言比java多一点,我就和面试官说了我以前是学c语言的(其实也是入门而已)。面试之前我背了点东西,就是面向对象和面向过程的区别,面试官一听我说起c语言,就问了我这个问题,所以我答的很好。
第四很多时候面试官会和你谈本专业的东西,比如看到你是某某专业毕业的,自然会问一下平时都学的什么,这个问题如果真问了一定要大好,及时专业知识不好,但是也可以说出很多,表现的自己对本专业很精通(其实面试官不一定听懂啦,忽悠),所谓术业有专攻,所以本专业问题一定答好,一般就问问学什么课程,专业主要从事哪些工作。
第五个人总结的就是一般笔试考的技术题,面试的时候就不太会多问了,所以不要太紧张,着重准备上面说的第二第三点,注意自己的表达,表现的淡定一点。要注视面试官的眼睛,会显得你更自信更尊重。
第六补充一下吧,关于java你会哪些,可以说基本语法没问题,还有一些相关知识(看书都能懂得,即使没用过也无所谓的,比如接口啊,内部类啊),拓展的知识比如spring,jsp,js之类的,不会的话可以先网络一下这些技术是干什么的,至少面试官说起来你不会连听都没听过。然后你说:正准备自学什么什么。。。。。
好像有点跑题了,
关于你的项目描述,如果是面试官让你设计一个产品的话,先搞明白面试的公司是做什么的,然后针对他们的产品研究下,一般的东西基本上就是前台显示和后台操作及数据库,如果能套你自己的项目模版就直接套进去。如果说不清楚你可以想象一下这个项目要实现哪些功能,越多越好。突出自己的逻辑性。
希望对你有帮助,祝你好运!
『陆』 现在西安java开发面试都问些什么问题在线等 急!
1. junit用法,before,beforeClass,after, afterClass的执行顺序
2. 分布式锁
3. nginx的请求转发算法,如何配置根据权重转发
4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
5. 线程的状态
5. 线程的阻塞的方式
6. sleep和wait的区别
7. hashmap的底层实现
8. 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
9. java内存模型,垃圾回收机制,不可达算法
10. 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
11. aop的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理
12. 是否用过maven install。 maven test。git(make install是安装本地jar包)
13. tomcat的各种配置,如何配置docBase
14. spring的bean配置的几种方式
15. web.xml的配置
16. spring的监听器。
17. zookeeper的实现机制,有缓存,如何存储注册服务的
18. IO会阻塞吗?readLine是不是阻塞的
19. 用过spring的线程池还是java的线程池?
『柒』 今天遇到一公司的超难的java面试题,面挂了,求帮忙!
交流一下,有些复我也不会。制^_^
1、数据没有排序的吗?排序了,可以用类似二分法搞。
3、只需用ThreadLocal包装一下这个bean的日期属性即可,简单。
5、有接口直接用spring HttpInvoke远程调用即可。
6、最简单的办法就是使用Terracotta服务器集群tomcat,ecache、quartz、session一站式解决。不那样的,缓存的话,可用memcached。tomcat中的session是复制式,直接在tomcat配置文件就可以吧。如果要实现自己手动更新感觉可以考虑用jms手动传递数据同步。
8、处理效率高了不少,并发效率好、数据更安全。
9、签名的算法是公开的,但是算法相关的密钥是私有的。
『捌』 java两年经验面试都会问什么问题
两年的java经验, 找工作时候简历就要实事求是, 匹配一些基础的研发岗位去面试, 如果平时内功修炼的到位, 拿下一个offer应该不成问题。
1、会问你科班基础: 操作系统知识, 数据库原理、数据结构、以及软件工程相关的测试, 流程之类知识。
2、会问你java涉及到的基础知识: OO基础, 常见类库用法, 常见类的区别, 优点和缺点。
3、会问你一般问题的解决方法: 如登录流程, 数据库不重名的方法, 文件读取或者处理的方法。这些都是平时应该积累的。
4、会问你一些算法的定义和区别, 可以参考一下:hihocoder.com/problemset
5、阐述问题的时候,尽量不要教科书式, 白话形式。
6、数据库方面:关系数据库各个范式的目的, 主键,索引,规则,PS,triger这些也要了解下用法。
7、能用常见BS框架做过小东西:ssh,ssi等, 能说出mvc,切面等内容。
8、记住: 不懂千万不要装懂乱说,态度要诚恳, 面试官看你求知欲强, 态度诚恳,也就喜欢和你聊下去, 就会有好印象。
9、面试过程不要
如果你还有很多Java行业的问题,可以加这个java学习交流qun:前面是四九四,中间是八零一,后面是九三一。学习氛围浓厚,有很多大神可以咨询。
『玖』 面试Java开发时问到高并发怎么处理的,还有sql优化有哪些办法,有哪位大神知道啊,新手!!
Java开发高并发的处理方法:
最基础的地方做起,优化我们写的代码,减少必要的资源浪费
避免频繁的使用new对象,对于整个应用只需要存在一个实例的类,我们可以使用单例模式。对于String连接操作,使用StringBuffer或StringBuilder,对于工具类可以通过静态方法来访问。
避免使用错误的方式,尽量不用instanceof做条件判断。使用java中效率高的类,比如ArrayList比Vector性能好。
图片服务器分离
对于web服务器来说,图片是最消耗资源的,于是我们有必要把图片与页面进行分离,我们把图片放到独立的图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力,并且可以保证系统不会因为图片的问题而崩溃。在图片服务器上,我们可以对不同的配置进行优化。
缓存
具体接触过的缓存机制是hibernate的缓存机制。为了避免每次都向数据库中取得数据,我们把用户常常访问到的数据放到内存中,甚至缓存十分大的时候我们可以把内存中的缓存放到硬盘中。还有高级的分布式缓存数据库使用,都可以增加系统的抗压力。
分批传送
在做某项目的时候,一次传递的参数太多,而且数据库规定一次最多传递的参数最多是三万条,当时有五万条记录,那怎么传送呢?最终是分批传送,电梯里一次乘不下那么多的人,会报超重的bug,那就分批把人送上去。
还有一次在考试系统中,如果那么多的考试人员同时提交到数据库中,数据库的压力增大,有时会被down掉,当时采用的方法是使用ajax异步传输,没有等待考生点击提交按钮的时候,就把考生的答案自动提交,这样也避免了突然断电考生前面做过的题出现丢失的现象。
DB优化
在数据库设计的时候就要考虑到后期的维护,数据库三范式是我们设计数据库索要遵循的原则。
索引的建立:建立索引要适当,如果一个表经常用来被查询,对于增加和修改很少被用到,我们就可以为这个表建立索引,因为对于增加和修改和删除操作时,我们对索引的维护要大大超过索引给我们带来的效率。
表字段的类型选择要恰当。包括字段的长度、类型等,要根据实际存储的数据进行选择,长度不要过长,否则会影响效率。
外键要慎用,因为主键代表这一张表,而外键代表一群表,对表之间进行了关联,在删除修改等需要我们关联。
在数据库操作上。 尽量使用prepareStatement,少用Statement,因为PrepareStatement是进行预编译的。
connection设置为readOnly,Connection是对书库连接,属于重量级,我们使用即可。
连接池的使用,我们可以修改数据库默认的连接数。
『拾』 求两份java面试项目和心得。
1:认真练习耿老师给的那五十道算法题。
2:看清自己的优缺点,多反省自己,做个自信的人。
3:平时在学校测试时千万别无目的无时间观念地去练,即使是离校后也不能放
松专业知识的复习,没有电脑也要在脑子里多回忆以前写的那些代码。公司要的是高效高质的员工,而不是别人20分钟写出来的程序你要花1个小时写出来,
你想仗都打完了你才想出破敌方略还管什么用。
4:高级时千万要稳住不能浮,每堂课都要认真听,老师讲的所有知识点都将可能成为公司判定你知识面是否宽泛的标准。有条件时最好了解了解其它的语言。
5:做自我介绍时一定不要只谈那几个简单的前景,还要展示你的口才,表达你对公司的向往。每个去面试的人都很优秀,或有名企工作背景,或有几个大型项目经验,或是名校科班学生,所以你要努力让主考官记住你。一句话,放松,自信。
因为很多人都缺少项目经验,对软件开发的过程相对陌生,而老师讲这方面的知识也比较少,如果你没有一定的代码和项目积累就算老师讲你也很难去体会、理解。再说这方面的内容太要求实际经验和日月积累,老师也不好讲。现在采用把枯燥的概念和实际的项目结合起来进行归纳,从而形成这样一个答题技巧。并且对其中的一些技术结合实际进行分析和总结。希望求职者能快速的知其然也知其所以然。从而能够提高面试的成功率。当然这仅仅是一个答题技巧,关键还是需要知识的积累。