每个人在社会上打拼都很不容易,不要说在工作中遇到的问题,就连面试也遇到各种困难,面试官会在面试中出各种问题刁难你,其实不算刁难,主要的还是考验你的实力和能力,特别是在招极少数人的时候,问题越怪异。就拿JAVA工程师来说,经常会遇到一些生僻的问题,其实就是为了考验你掌握的知识够不够全面,够不够牢固。废话不多说,下面是我跑了N家招JAVA工程师公司所总结出来的问题,希望对你们有说帮助。
一、Java底层基础题
1、SpringMVC的原理以及返回数据如何渲染到
2、一个类对象属性发生改变时,如何让调用者知道?
3、重写equals为何要重写hashCode?
4、谈谈你对JVM的理解?
5、Mysql的事物隔离级别?
6、Spring的原理
7、谈谈你对NIO的理解
8、ArrayList和
9、随便说说几个单例模式,并选择一种线程安全的
10、谈谈红黑树
11、举例说说几个排序,并说明其排序原理
12、Mysql索引的原理
13、序列化的原理和作用
二、并发及项目调优
1、说说线程安全的几种实现方式?
2、方法内部,如何实现更好的异步?
3、项目中为何要用缓存?如何理解nginx + tomcat + redis 集群缓存?
4、日常项目中,如果你接手,你准备从哪些方面调优?
5、谈谈你对分布式的理解
6、Redis实现消息队列
7、另总结多线程相关面试题50道
8、分享一个调优工具和方案:如何利用 JConsole观察分析Java程序的运行,进行排错调优
三、手写代码题(包含sql题)
1、假设商户表A(id , city ) ,交易流水表B (aid, amount , time) 这里的time代表交易时间, 请用sql写出查询每个城市每个月的销售业绩(答案可在评论里回复)
2、假设有一个数组 A ,int[] A = { 1 , 3 , -1 ,0 , 2 , 1 , -4 , 2 , 0 ,1 ... N}; 原来是需要查出大于0的数组,但是由于传参错误或者其他原因,导致查出0和负数了,现在要求在不使用新数组和新集合的情况下(即只使用这个A数组,因数组数据比较大,且只能用一次循环) 实现正数放到数组的前面,小于等于0的数放到数组的末尾(答案可在评论里回复)
总结:
暂时就先总结这些,后续再补充吧,面试题千变万化,不变的是知识点和技术根本。基础很重要,故不积跬步,无以至千里;不积小流,无以成江海。学好基础,把握好技术的原理,然后去实践,这样才能深入了解一门技术,学不可以已!
另外,面试过程中,保持自信,不会的咱大胆的说不会,没啥好丢脸的,不会不是说你真的不会,也许是忘了,也许是没注意到,记住面试题目,回来自己补充资料和相关的信息,相信你肯定会越来越从容,要记住不是为了面试而面试,而是为了未来的工作而面试,如果能一直保持这个状态,没有什么事情拿不下的。
拿我自己来说,很多不会,关键在于你愿不愿意去学,愿不愿意去付诸行动。加油吧,希望各位看官都能找到心仪的工作