面试java岗位需要什么知识基础(去面Java岗的失败案例)(1)

这次下午两点的时候面试:

进去后首先是让先介绍一下自己以及项目. 然后让我画一下项目的架构图以及目录结构, 问为什么这么设计.

再下来就问一些比较基础的像MVC的执行流程是怎么样的, 无非就是dispatherServlet 和解析器之间的传递么

再下来直接问我 jvm的类加载过程以及 新生代Eden区 和ServivorFrom 以及ServivorTO区的问题, 例如: 什么时候MinorGC会触发, 讲一下这块的流程. 然后是什么时候新生代的数据会转移到老年代.

再接下来就问我一些算法. 我当时就懵了 , 兄弟我面的职位没那么高级啊. 反正这块没答上来.

然后问我多线程这块,先是问线程池是通过什么创建的 Executors 然后问 创建线程池的4种方式以及各自的区别包括问了下NewFix线程池的参数含义,然后出了几个题

1: Syncronized

Class a {

Syncronized void aaa (){}

Syncronized static void bbb (){}

}

通过两个线程,一个调用aaa方法一个调用bbb方法,问线程调用了bbb方法后 aaa方法还能进入吗.

2: 有字符串123456789这样的, 有两个线程同时执行,实现一下一次循环遍历出123456789 例如 t1线程结果是1 t2线程结果是2 再是t1 = 3这样的.

3: 这个就不是线程题了, 一个字符串 abcddcba 写一个代码证明 这个字符串是对称的.

数据库这块问题: sql优化 讲一下b tree b-tree 在mysql中的区别,数据库存储引擎,包括存储的文件结构,sql执行流程,本地事务如何执行的等等,反正这块问的很细. 这个应该是我吹的最完美的了

spring的话问了MVC的执行流程 也就是->dispatherServlet 问了mybatis的一些底层

IO这块没有问到.

dubbo没有问, 就直接问的你们的分布式事务是怎么处理的.....

最后,看了下我简历,让我回去了, 后面知道是 我以往的项目都简单, 觉得不能胜任吧. 给我气死了都, 面了三个多小时......

下面这些就是我整理的一些面试题1.集合

ArrayList 基于数组实现 通过数组copy扩容 特点:读取效率高

LinkedList 基于node实现链式链接 node中记录当前的值和前后node节点 特点:插入删除效率高

Vector 线程安全,强同步的arraylist

Stack 栈 对Vector功能性的封装 先进后出

Queue 队列 基于数组实现 先进先出

hashmap 基于数组 链式结构实现 加载因子:0.75 阀值=数组容量*加载因子 如果容量超过阀值,自动扩容2倍

1.7和1.8的区别 (红黑树)

HashTable 线程安全的hashmap 不接受null值

LinkedHashMap HashMap的子类,记录顺序的hashmap,其中的entry记录了上一节点和下一节点,双向链式结构

HashSet 基于hashmap实现的不可重复的集合

LinkedHashSet HashSet的子类,记录顺序的hashset,同样是双向链表

juc中的常用并发工具如ConcurrentHashMap(支持并发的hashmap)等.

2.jvm

内存分配 1内存如何分配

垃圾回收 1什么样的对象会回收 2什么时候回收 3各代回收算法 4各垃圾回收器区别

jvm优化 1常用参数 堆大小Xmx Xms 永久带大小-XX:permGen 老年代年轻带比例 对象年龄参数 垃圾回收器选择参数等

类加载机制 反射

jdk常用工具 jstack jstat jmap等(会问处理过什么问题,例如cpu负载高问题查找)

3.多线程

线程基础 1如何实现线程创建 2线程各种状态 3线程中的常用方法(例如sleep和wait的区别)

线程池 Executor框架 常用线程池fixThreadPool,singleThreadPool,cacheThreadPool的实现原理和区别 schedulerThreadPool延迟线程池

实现线程池的工具 阻塞队列blockingqueue,没容量的队列syncronisedqueue,延迟队列delayqueue等

说说java中的锁

4.mysql

索引类型 如何建索引 如何使用索引 索引的数据结构hash,btree,b tree

sql优化 explain

主备同步原理:binlog

5.缓存

memcache,redis区别,使用场景

一般深入问memcache的不多 主要问redis

1.redis支持的数据结构

2.redis特性:如串行,原子性

3.redis常用命令

4.redis使用场景

6.消息

1.activemq,rabbitmq,rocketmq,kafka这些消息使用过哪些?又什么区别?

2.这些mq的原理.

3.mq使用场景.

7.io,nio

问的不多,简单了解一下就行

8.搜索

lucence,solr,es使用过哪些?说说原理.

9.数据结构及算法

1.算法:查找算法 排序算法

2.数据结构:各种树(二叉树,搜索树,平衡树等)

10.常用设计模式

1.单例 7种写法

2.工厂

3.动态代理

4.责任链模式

5.装饰器模式

6.适配器模式

11.网络通信协议

1.网络协议5层

2.http和https区别

3.tcp,udp 三次握手,四次挥手

4.http中包含什么

5.是否用过抓包工具

12.常用框架:spring,dubbo

说说ioc和aop的原理(ioc bean工厂 aop 动态代理实现 2中方式 实现接口采用Proxy和InvocationHandler 未实现接口通过cglib实现)

说说dubbo原理 为什么使用dubbo

微服务的优缺点 服务治理是什么

13.linux常用命令.生产环境问题定位. 这个也不会...只会最基础的命令

数据库这块的问题:

1.如何保证库存不超卖的解决方案 这个老师讲过,答上来了

2.抢红包方案设计

3.你之前的哪个项目最熟悉,说说这块的设计,有什么亮点,如果让你现在重新设计你会怎么办 这个就随便乱吹了~

4.有一个500G大文件,文件中每行是一个数字,写一个main方法对文件排序

5.有一个6000W行的订单表,现在有个需求,查询一个人的前100个订单,如何设计 这个我真不会了~~ 经验有限 完全想不到...

架构这块的问题, 我就是在这边挂了......

分布式消息队列:如果让你实现一个消息队列,该如何架构设计,说一下思路

分布式搜索引擎:1.es工作过程,如何实现分布式 2.es在数据量很大情况下们如何提高查询效率

高并发高可用架构解决方案:1.如何限流,降级 2.缓存如何使用,使用不当会有什么后果 3.如何熔断,熔断架构又哪些,说说原理

数据库分库分表:1.如何分库分表 2用过哪些分库分表框架如sharding 3.如何解决分库分表主键冲突的问题

分布式事务:如何实现分布式事务?数据一致性问题如何解决?如何补偿

系统吞吐量:怎么提高吞吐量?用过什么压测工具?之前做过的系统的并发性能如何?tps qps最高多少?

总结

这次面完之后, 也也发现了一些地方在讲的时候,感觉也没有理解,又有点讲不清的感觉, 准备再闭关再造一下,再准备好好梳理一下, 争取下次能面的好点,也希望大家能面到一份自己心仪的工作...

,