- java 中的关键字 final 可以用来修饰什么,分别起什么作用。
- 请说明 ArrayList,Vector,LinkedList 的存档性能和特性。
- String,StringBuffer,StringBuilder 有什么区别。
- swith 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 strng 上。
- 存在表 T(a,b,c,d),要根据字段 c 排序后取第 21-30 条记录显示,请写出 sql 文。
- 查出 user 表中 username 相同的记录,显示 username 和重复的次数,给出 sql。
- float 是多少位的。
- 设计四个线程,其中两个线程每次对 J 增加 1,另外两个线程每次对 J 减 1,写出程序或者思路。
- a.hashCode()有什么作用?与 a.equals(b)有什么关系?
- 写出 hashMap 的数据结构。
- 简述 MVC 设计模式。
- 什么是 Java 优先级队列。
- 简述一下 spring,都用过 spring 的什么?
- 说一下数据库的索引。数据库隔离级别。
- statement 与 PreparedStatement 的区别,如何防止 sql 注入。
- 简述一下 restful,设计一个 url 要注意什么。
- 如何进行单元测试的。
- 选用了 base 跟 solo,如何实现的数据同步。
- 说几个常用算法。
- 下面程序会输出什么值?
int count = 0; for(count++;count++ < 10; count++) System.out.println(count);
- 简述 form 表单提交 POST 方法与 GET 方法在字符编码,http 协议等方面的区别。
- ArrayList,LinkedList,HashMap 的区别。
- 介绍一下 Spring 的事务管理,使用什么设计模式实现。
- 一个 HTTP 请求从开始到结束都经历哪些过程,简写流程图即可。
- synchronize 关键字与 volatile 关键字的作用和区别。
- 说一下内连接,左连接,右连接。
- 给 list 排序(我记得是有个 collections.sort),说出这个,又问了一个什么排序的,忘记了。
- 写两个链表,将其合并排序,如何操作不多占用内存。(完全没任何思路,对链表就不熟哇···)
- 多线程是 void,无返回值的,如果用多线程从不同的数据库中读取到数据,如何将读取到的信息合并。(题目记得不是很清楚了,应该精髓记住了,大体就是没有返回值,那如何合并多线程取得的东西。一个同事跟我说出力到文件中,然后合并文件)
- 写出单例模式。
上面基本就是这次面试问过的能记住的问题。有些记不住了。那些问高并发的,算法的,都被我自动忽略了。我是真不懂那些呀~上面这些其实还是蛮基础的,但是很多你懂,不一定记得准确,说就更不一定说得齐全了。
下面这些是之前在网上看到的,就粘贴过来了。有兴趣的看看。
spring 主要考 ioc,aop 底层实现,事务,spring mvc 原理
ioc 就有可能问反射和类加载,这就会牵涉 jvm 的东西
互联网公司面试还有三个东西最好看看,消息队列,nosql,rpc 与 soa
- Spring.mvc 的优势,原理,流程
- Mybatis 的原理优势
- 集合里面那些对象的原理
- 扩容原理,特别是 map 的底层
- Hashmap. Hashtable 和 cocurrentHashMap 的区别,要讲出它们各自的实现原理才行,比如 Hashmap 的扩容机制. cocurrentHashMap 的桶分割原理. 多线程安全性。
- 几种造线程池的方法,区别
- Rpc 原理
- Nio 和 netty,常用的接口
- Redis 和数据库的持久化的
- Memached 过程和原理
- 多线程时间复杂度
- Redis 做队列的原理
- zk 做订阅的原理,底层
- Juc 里面的锁原理
- 实现自己的 hashmap
- treemap 红黑树
- jvm 调优
- jvm 内存模型
- 类加载器机制
- 数据库索引
- 数据破坏索引
- 手写快排
- js 闭包
- nio 是否了解 阻塞之后通知机制是怎样的?
- Java 的序列化做什么用的 序列化 id 会出现哪些问题?
- 在 Java 中 Executor 和 Executors 的区别?
- 为什么使用 Executor 框架比使用应用创建和管理线程好?
- 怎么通过 linux 命令去分析 jvm 里面那个线程阻塞了
- Java 中用到的线程调度算法是什么?
- 什么是多线程中的上下文切换?
- classloader 结构,是否可以自己定义一个 java.lang.String 类,为什么? 双亲代理机制。
- 有没有做过 jvm 内存调优,如何做的,举例子,用过哪些工具?
- Java 中的 volatile 关键是什么作用?怎样使用它?在 Java 中它跟 synchronized 方法有什么不同?
- 面试官从简历里抽了一个较感兴趣的项目,让把项目简单介绍了下,针对项目问了几个技术问题
- 介绍 Java 中垃圾回收机制,程序员平时需要关注这个吗?为什么?请举例说明。
- 数据库隔离级别介绍. 举例说明。
- override 和 overload 的区别。
- 求二叉树的最大距离(即相距最远的两个叶子节点),写代码。
- 两个栈实现一个队列,写代码。
- 你觉得你的优势是什么?有什么技术薄弱点吗?
- 数据库 sql 调优,慢 sql 定位
- 索引有哪几种,区别,使用场景
- mysql 引擎,哪几种,区别使用场景
下面是一个在外企工作 8 年人,给传统 it 转互联网方面的面试建议。
-
算法基础
写 java 的基本上都是做应用系统的,用到算法的机会几乎没有,所以一般不会考。但是如果工作年限比较长,保不齐面试官怀疑你的编程能力,故意要考考,所以快排. 堆排. 逆转链表. 遍历二叉树之类的基础还是复习复习吧。
如果面的是 bat 核心部门,担心碰见装逼人士的话,也可以提前复习下《编程之美》之类的。 -
java 基础
hashmap 面试官最喜欢考,一定要搞明白原理。
treemap 知道就可以,应该没人闲的蛋疼考红黑树。
threadlocal 面试官也喜欢考,要搞明白原理
反射. 动态代理. ioc. aop 复习下吧,几乎必考
nio. aio 几乎都会问,抽空写写例程,知道 netty mina
class loader: 知道双亲委派,如果知道 tomcat. jetty class loader 异同更佳 -
gc
gc 很多面试官都喜欢考
面试前背熟各种 gc 算法的区别,理解原理。
G1 很多面试官自己都不明白,没时间就不用管。 -
高并发
传统 IT 一般接触不到高并发,不过没关系按下面说的做,应付面试问题不大
把 java.util.concurrent 下面所有的包和类通读一遍,理解原理. 记住核心代码. 写例程,网上有很多 concurrent 相关类原理解析的文章,对着文章看源代码理解起来问题不大。
有些类代码很复杂比如 aqs,看不明白就算了,也不用太花功夫,记住原理即可,因为大部分面试官也不明白。
一定要写例程,例程最好跟你的业务能扯上一点点关系,这样面试的时候就是你实际项目里面的代码了。
面试官喜欢考的类有:ConcurrentHashMap. 读写锁. Condition. 线程池. Barrier. CountDownLatch. Callable. BlockingQueue -
hdfs 和 mr
传统 IT 一般也接触不到,如果不想准备就算了,如果想准备的话,就在自己的开发机上撘 3 个 linux 虚机, 按照网上的教程自己一步一步撘一个 hadoop 环境出来,然后找几个实际业务中生成出来的 log,写几个 mr 程序处理一下。
面试的时候就可以很谦虚的说,实际项目里面用过,但是用的不多 -
application server
websphere. weblogic. jboss 之类的就不用准备了,应该没人问你这些啦。
有时间的话,看看 tomcat 和 jetty 的源代码,重点看线程模型和 io,这将是一个很好的加分项 -
数据库
oracle. sybase. db2 不会有人关心了,如果之前没用过 mysql 的话,找本介绍 innodb 原理的书好好通读一遍吧。
理解 myisam 和 innodb 的区别
理解关系型数据库索引的原理,理解一些简单的索引优化的原则。
面试官很喜欢给出一堆 where 子句,考索引. 复合索引什么情况下起作用 -
缓存
一致性哈希很多面试官喜欢考,提前准备下吧。 -
ssh 框架
这些没搞过就没搞过吧,这种框架层面的东西,对于一个有经验的 java 码农,学起来也就是分分钟的事情。
不过你也可以说这些我没用过,但是我知道原理,然后说一堆动态代理. cglib 的原理出来,也是加分。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于