95后妹子面试的那些"套路"(附带个人书籍推荐)

哪有所谓的套路,你会的越多,你就是套路

最近有很多朋友问我一些面试题,或者说准备面试了,怎么复习啊. 孔孔老师就上线了…正好趁着早上不想学习, 就再把这一块总结总结. 个人拙见(毕竟我还是很low的…) 夹杂部分书推荐

集合

我一般喜欢从集合开始问,因为可以延伸到很多地方

  1. 可能会问对整个集合框架是否熟悉, java集合(一) 总体框架 可以由大而小,层层递进,真正可以讲多细,看当时面试情况吧.但多数可能从hashmap开始问,底层数据结构. 可能你会回答:分版本,1.8之前是数组+链表, 之后是数组链表红黑树.
  2. 你引出红黑树,那么我就可能会问你,知道什么是红黑树嘛,然后再问红黑树的反转啊等等.
  3. 下面可能会问hashmap是否线程安全. 这时候你就可以讲put和resize()的时候,会有问题啊. 然后讲讲如何有问题. 或者会问你了解hashmap的扩容嘛, 你就讲讲加载因子(0.75 概率学泊松方程吧),阈值然后怎么扩容的等等. 再说说为啥扩容2的倍数.等等。然后你在讲扩容的时候, 就又可以延伸到线程不安全上面了. 后面可能就会问: 怎么可以让他安全呢. 你可以跳currenthashmap或者 hashTable上面,这样世界又是你的了. 你可以给他们讲与hashmap的区别,他们内部原理.等等. 或者考虑hashmap的代码, 加个锁啥的, 面试官就又可以问你锁相关的知识了. 当讲到锁的时候, 可能会往下问多线程的问题了 集合源码易懂,建议自己读一读.

多线程

  1. 可能会接上面问, synchronized锁粒度. 顺便问问偏向锁轻量锁等.
  2. 常用线程池, 核心参数有哪些,这里可能会问一些内部具体多线程怎么跑起来的等, 比如什么情况创建新线程, 阻塞队列对线程池有啥影响等,(这里非常建议看并发编程的艺术, 讲线程池的这一章,这了讲的透透的, 然后平时正好项目有用,那么相信你完全没问题)
  3. 然后你正好引到项目上, 可能我就会问你具体怎么用的,可能出个简单线程题,还可能问遇没遇到死锁问题呀. 死锁怎么检测,原理是啥等等

spring

  1. spring ioc aop,看过源码吗, 知道aop底层吗, jdk和cglib区别啊等等.
  2. bean加载过程,AOP,IOC 简介
  3. springboot的自动配置啊等等.spingboot-springmvc自动配置原理(ps: 只看这几篇文章是不行滴…我好多都没写, 有点小后悔, 可以看看spring的书. spring技术内幕, 然后springmvc技术内幕, 貌似这个名字,封面有绿色…我就记得这些了)
  4. spring循环依赖.这里也可以讲一些东西,比如如果循环依赖双方都是原型对象,那么肯定报错.如果是单例,配置有参构造器注入, 也报错.等等. 好几种情况.
  5. springcloud 这个问几大组件的多

mybatis

最基础可能会先问$和#的区别. 预编译,sql注入等. 然后可能会说sql注入的一些东西. 往安全性上偏, 也可以问很多,比如脚本注入等等.

简单使用,可以有参数处理, 动态sql.关系映射等. 缓存机制也是常问的内容.

附我一个地址, 也是不太全, https://blog.csdn.net/kwy15732621629/column/info/20925

源码, 如果你可以自己扩展,那当然更好了.

持久层, 如果你写了hibernate mybatis 或者jpa. 那么可能会问你三者区别啊. ssh框架的话, 可能会问Struts的内容喽~

jvm

  1. 最简单的, 知道内存空间不. 讲讲~ 然后你巴巴啦啦讲了什么堆栈方法区,本地方法栈,pc寄存器等等. 然后可能会给你出个例子, 说一下, 每个都在哪里放着…所以, 什么位置放什么东西.
  2. 你了解垃圾回收算法嘛.然后再根据垃圾回收算法, 给简单提点问题.
  3. 简单问题, 软引用/弱引用啊.哪些会被回收啊.
  4. 垃圾回收器呢?
  5. 类加载机制呢?
  6. 双亲委派了解嘛?

jvm 总结

下面就会问一些jvm调优的内容了

  1. 你用的什么调优工具,比如jvc, jconsole等等.
  2. 你参考的一个健康GC状况是什么
  3. 内存溢出和内存泄露区别是啥. 遇到过oom问题嘛,怎么排查的啊?

redis

  1. 可能会先上来就问你, 为啥要用缓存啊,你们项目怎么用的.数据量多少啊等
  2. 然后基础知识, 可能会问你数据结构有哪几种啊. 这里可能会有人问的比较深一点, 比如每种类型底层是什么. 甚至会问一些跳跃表的内容等. 然后一致性hash啊. 和普通hash有啥区别啊等等.
  3. 持久化机制了解嘛.区别是啥啊, 你们怎么用的啊
  4. 过期时间了解嘛, 怎么设置的哇
  5. redis如果重启了,或者宕机了, 这个过期时间会保留.然后讲讲redis的路由机制. (集群通信)然后缓存穿透/缓存雪崩内容.
  6. 怎么避免重构缓存啊
  7. 查询慢, 怎么解决啊. 这里可以说很多啊, 从外层比如网络一直到底层
  8. 缓存数据库双写数据不一致情况
  9. 公司怎么个硬件部署, 高峰期资源使用情况等.
  10. 有的可能会在出个场景题. 随机应变喽~

mq

  1. 使用场景,作用是啥
  2. 我之前比较熟悉的是rabbitmq. 当然现在在学习kafka.
  3. https://blog.csdn.net/kwy15732621629/article/details/85647481 基础知识,就是一些原理,然后就是一些应用问题了 4.选型; 5.怎么保证高可用; 6.重复消费问题/ 数据丢失问题 /顺序性问题/ 大量积压怎么办;

rpc

好吧, 先说说你知道的rpc.你最熟悉哪个 . 然后就开始问了… 一般如果回答dubbo. 无可避免还会问到zk. 比如注册的临时节点啊. https://blog.csdn.net/kwy15732621629/article/details/82052906 dubbo服务发现啊.通信原理啊, 负载均衡方式,集群容错策略啊 幂等性如何处理, 请求顺序如何处理啊等等 然后zk .其 watch机制啊. zk 原理, 其实分布式的感觉都差不太多. 然后zab协议. 如果扩展多了. paxos协议 一般说完zk,可能会问你们项目中分布式锁的处理. 分布式事务问题. 还是围绕zk的使用来的, 比如选主/发布订阅/负载均衡啊等等.

IO

说完dubbo .可能就会问io了. 客户端到服务端连接后, io通信怎么做? 然后简单可能就会问问bio和nio区别. 然后再聊聊nio的东西, 比如缓冲区/通道/选择器等.再往下,可能会聊聊netty.netty线程模型啊 零拷贝如何实现等

数据库

以mysql为例

  1. mysql的基础内容开始问. 一般就是存储引擎的一些内容. 然后说一下他们之间的区别.
  2. 索引, 必问的一个东西.索引原则/ 什么情况不走等等. 或者聚集索引, 非聚集索引. 总之B+ 往外扩伸, 也是可以有很多很多东东的.
  3. 数据库锁.比如最简单的乐观锁悲观锁. 数据库死锁问题.
  4. 是否优化过sql. 如何优化的.
  5. 隔离级别等
  6. 主从复制原理, 主从同步延迟问题如何解决.
  7. 读写分离.
  8. 分库分表. 怎么做的. 然后分库分表有好几种, 比如客户端分片,代理分片/支持事务的分布式数据库. 那么之类可以继续扩展问你, 比如sharding jdbc. mycat等内容.然后选型问题.

然后扩容方案是什么

之前有一篇, 简单写了些. 没画重点…自行领悟吧 https://blog.csdn.net/kwy15732621629/article/details/87922490

运维部署

这个其实是跟上面很多有关系, 比如说文件服务器用啥. mysql多少台. 整体的一个部署方案, 如何保证三高的~ 然后k8s啊, docker啊这么一个使用和简单原理, 方便排除一些错误使用.常用的linux命令啊.

权限

每个公司的权限, 也是一个大块头. 这个看自己能力了. 最简单的基础知识应该都有了解过.

工具类

比如solr.elk 等, 就靠自己去学习使用喽~

架构类

这个其实我比较low喽,但是面试, 可能会问你一些架构设计问题, 还是蛮常见的. 当然也和你引导面试官, 或者简历本身, 有很直接关系.

设计模式和算法

设计模式, 如果代码用了, 可以讲讲如何使用的. 然后简单的东西, 类图和优缺点啥的. 需要了解. 算法, 我平时码代码, 貌似用的不多. 但是基本的一个思想是需要了解的

书籍学习推荐

先说好, 没推广费,我就是自己的一个分享…

如果你是实习生,那么基本的java基础肯定是希望扎实的, 如果你做过一些项目,还可以尽快能承担起来, 哇,那我很喜欢了好嘛

如果社招, maybe你比我优秀喽, 那么可否再推荐我些学习内容哇

java疯狂讲义, 最原始, 最简单的基础, 但是多看的时候, 总能发现自己不会的内容~

java8新特性, 这个就自己网上找视频学习使用吧.

java集合类. 建议自己跟着源码走一下.

io的话, 疯狂讲义也又讲, 然后http://ifeve.com/overview/ 这个地址也可以看看, 然后还有一本书, 叫java nio中文版 . netty的话, 我就是看的闪电侠的博客和课程(目前我还在看…我还不会.)

jvm : 书籍: 深入理解java虚拟机. 然后java性能优化, 也有讲部分.

多线程: 书籍: java多线程编程+ java并发编程的艺术. 前面例子居多.后面理论居多.(我也不太会?)

框架: 书籍: spring技术内幕/spring源码分析/看透spring mvc 源码分析与实践. springboot使用, 网上一堆集成过程. 书的话: springboot实战 + springboot揭秘.

springcloud. 周立老师的入门《Spring Cloud与Docker微服务架构实战》, 然后程序猿DD的增进《Spring Cloud微服务实战》.

mybatis : 我当时好像是在网上找的视频入门的, 就培训班官网放出的视频. 记不太清了.

zk+dubbo : dubbo的简单使用的话, dubbo用户手册讲的很清晰了. 然后dubbo架构设计详解. 我还没看… zk 《从Paxos到zookeeper分布式一致性原理与实践》 这本书

mysql: mysql技术内幕 + 高性能mysql .两本书结合看.我一般是横向去看. 然后mycat权威指南.

redis: 黄鹏程的入门. 付磊的<> 增进 , 黄建宏的<> 增进. 三本书各有特色. 第一本最后的一部分, 是其他没有的. 然后中间那本集群原理啥的, 给我印象很深刻. 第三本, 最喜欢的是每一部分的小结,总结很到位. <<深入分布式缓存>> 不光讲了redis还有其他, 作为知识扩展吧.

mq. 可以先看官网入门. 然后再看书

linux. 我貌似是跟着阿铭学linux. 简单使用.要不就是鸟哥私房那本书.记不清了.

solr/es 网上直接搜就行 然后maven: maven实战

Tomcat : how Tomcat works

设计模式: 最开始入门大话设计模式, 主要是故事有意思, 然后head first

算法: 啊哈算法, 还是故事好玩…

阿里的码出高效

架构: 张开涛的<<亿级流量网站架构核心技术>>. <<可伸缩服务架构>> <<分布式服务架构>> <<聊聊架构>>

个人爱好喽~~~

原文发布于微信公众号 - Kirito的技术分享(cnkirito)

原文发表时间:2019-03-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券