互联网公司面试经历

时间:2022-11-10 18:02:12
本人工作已有多年,一直在传统BI行业做java开发,所熟悉也就SSH框架那一套东西。但由于在这种公司对技术要求不高,所以技术方面也没多大的提升,因此想换行业试试,比如去互联网公司。
但最近面试一些互联网,发现互联网公司技术体系和自己所熟悉的东西相差很大(结果当然很悲催),现将自己面试过的一些题目分享,希望能对想从事互联网工作的人一些参考。
也希望自己能在这些技术方面提高。

一、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


该回复于2016-07-21 13:04:49被管理员删除

#1


互联网行业对于技术的要求更高

#2


新手表示学习,这些面试题目都要求完全掌握吗?

#3


中国的互联网行业不是一般做做MIS信息系统的人能够胜任的,关键还是自己平时多学习多积累,不能满足于代码工人的知识水品

#4


这些题要求都很高  架构师的水准

#5


看到这些题觉得要求好高啊,只能是学会有目的的学习

#6


该回复于2016-07-21 13:04:49被管理员删除