但最近面试一些互联网,发现互联网公司技术体系和自己所熟悉的东西相差很大(结果当然很悲催),现将自己面试过的一些题目分享,希望能对想从事互联网工作的人一些参考。
也希望自己能在这些技术方面提高。
一、java虚拟机方面
1、内存模型,什么是方法区,如果方法区内存满了,会触发什么类型的垃圾回收,还有什么情况下会造成栈溢出
2、垃圾回收,描述垃圾回收的原理,我讲述了引用计数法和标记清除法,问引用计数法如何解决循环引用的问题。介绍现在jvm的分代垃圾回收机制
3、如何检测死锁
4、如何检测死循环
5、什么是泄露,java里面存在内存泄漏吗?哪些情况会造成内存泄漏?
二、java NIO
1、NIO和IO的区别
2、为何NIO能提高读写效率
3、NIO的三大核心
4、数据包如何设计,数据分包、粘包如何处理
三、并发编程
1、synchronized和lock区别,lock的condition
2、同步工具(Semaphores、CountDownLatch、CyclicBarrier等)
3、并发集合,如ConcurrentHashMap的实现原理,如果读写操作落到底层的同一个map上是如何处理的?
4、原子类,如AtomicLong的incrementAndGet方法内部实现原理(当时没回答上来)
5、volatile的实现原理
四、设计模式
1、熟悉哪些设计模式,描述对责任链模式的理解
2、tomcat的过滤器链模式中,FilterChain是如何工作的
五、Spring
1、对IOC、AOP、事务的理解
2、介绍Spring事务的传播方式和隔离级别
六、Hibernate
1、首先问我hibernate还是mybatis用的多,我回答hibernate,然后问了以下问题
2、缓存实现原理,数据库如果外部修改,如何同步到缓存
3、采用乐观锁的情况下,如果当前线程需要修改的数据,在读取到缓存之后,被另外一个线程修改,则造成update失败,如何避免
七、MySQL
1、分布式事务有哪几种
2、如果有个查询需要涉及到跨库查询(在分库分表的情况下),如何设计该表
八、RPC框架
1、为什么要采用storm的DRPC(我当时有个项目采用了storm来作为RPC框架)
2、用过哪些其他的开源RPC框架
九、大数据方面
1、hive跟spark有什么区别
2、datanode如何检测数据缺失的?
3、datanode检测到数据缺失后,如何进行数据恢复
4、shuffle的作用是什么?
5、hbase的数据写入过程
十、算法方面
1、如何最快对超大数据量的Integer集合排序(数据量大到内存存放不下)
2、有一个超大型的数组(大到内存放不下),现在要对其中任意范围(任意的区间,区间可能连续,也可能不连续)的数据进行求和,由于该调用非常频繁,请问如何优化这个计算?每次调用的范围都不确定,而且也不存在热点
3、有5张超大数据量的表(数据量都在百亿以上),它们都可以同一个字段id(int型)关联,现在对每个表进行一定条件的过滤(比如A表是字段1=xxx,B表示字段2=xxx),然后用id进行关联,最后只需要得到满足条件的id集合,采用什么算法?
6 个解决方案
#1
互联网行业对于技术的要求更高
#2
新手表示学习,这些面试题目都要求完全掌握吗?
#3
中国的互联网行业不是一般做做MIS信息系统的人能够胜任的,关键还是自己平时多学习多积累,不能满足于代码工人的知识水品
#4
这些题要求都很高 架构师的水准
#5
看到这些题觉得要求好高啊,只能是学会有目的的学习
#6
#1
互联网行业对于技术的要求更高
#2
新手表示学习,这些面试题目都要求完全掌握吗?
#3
中国的互联网行业不是一般做做MIS信息系统的人能够胜任的,关键还是自己平时多学习多积累,不能满足于代码工人的知识水品
#4
这些题要求都很高 架构师的水准
#5
看到这些题觉得要求好高啊,只能是学会有目的的学习