Java后台求职小建议

Java后台求职小建议_第1张图片

最近在boss上发了一些内推的岗位,和我聊的人还是很多的。但是我发现不论是个人能力还是简历都存在很多的问题,为了方便大家也方便自己,现在对java后台求职需要注意的一些问题进行了总结,欢迎大家提出一些宝贵的意见。

之前在github上弄了一个计算机英文电子书的repo,后来被封了。现在申请了一个新的,但是只加了三本个人觉得还行的书,有需要的可以下载一下。后续应该会陆续加一下新的书进去。

1.专业技能

专业技能是每个公司的必考项,它是你工作最基本的东西。我列举了一下经常被问到的一些问题。

1.1 Java基础知识

  • String 是否能够被继承(final),它是Immutable的(参考一些String的方法,它会生成一个新的String。底层的char array(java 9变成byte array了)会不会共享?);字符串常量池;StringBuffer 和StringBuilder 的区别,什么时候可以选StringBuilder,同样的可以问List和Vector的区别。
  • 集合相关,HashMap和TreeMap的区别,底层数据结构是什么;LinkedList和ArrayList的区别,下面这段代码list是LinkedList和ArrayList有什么区别。
for (int i = 0; i < list.size(); ++i) {
        String s = list.get(i);
}
  • 多线程相关:AbstractQueuedSynchronizer,lock,Condition,CyclicBarrier,CountDownLatch,Future,ConcurrentHashMap这些内容一定要去了解,肯定会问到;Object.wait(),Object.notify()这些的使用(结合看一下Conditon的使用),它和Thread.Sleep的区别(锁是否被释放);valotile和synchronize关键字有什么用,synchronize和juc包里面的lock对比;对象锁和类锁(static方法);
  • ClassLoader相关的内容,熟悉一下Bootstrap Class Loader,Extension Class Loader和System Class Loader。网上相关的文章还是很多的,可以看一下;热部署的简单思路等;
  • 范型和反射:因为spring这种框架大量的使用了范型和反射,所以这个问题一定会问到。
  • JVM和GC,JVM的内存分布,引用计数有什么问题,标记清除算法大概的思路;目前GC常用的一些算法比较,有没有对JVM进行过调优;jmap、jstat、jinfo等常用命令的使用,mat工具的使用。
  • NIO 相关:你只要知道IO多路复用,select,poll和epoll这些一般问题不大,如果你项目里面有用到相关的一些库(比如netty),那可能会问的比较深入一些。

1.2 Spring Boot

Spring Boot是目前比较流行的Java Web框架,所以一般都会问相关的问题,只是深浅不同。spring的问题会有很多,我也说不上来具体很问哪些(主要是我也不太熟)

  • IOC的概念,为什么要IOC。
  • AOP,主要的实现方式:动态代理(需要实现接口)和cglib,应用:transactional注解,当然也可以根据实际使用的情况展开回答。
  • 源码阅读:需要平时积累的。

1.3 mysql

其实应该是RDBMS的,但目前用的比较多的就是mysql了,所以就以mysql为例,进行说明。mysql推荐大家一个博客,水平还是比较高的。

  • ACID原则,这个概念需要好好的理解,结合事务一起。
  • 事务和锁:事务的隔离机制;非阻塞读,官方文档值得好好的阅读。
  • 索引相关:InnoDb聚簇索引和非聚簇索引,关于索引优化的可以看一下一本叫High Performance Mysql的书,讲的还是蛮详细的;explain的使用手册。
  • 对分库分表的理解

1.4 nosql

随着互联网的迅猛发展,传统的RDBMS无法满足业务的需要。常见的一些nosql数据库包括:redis,memcache,mongodb,hbase等。一般会根据候选人对这些数据库的熟悉情况来进行提问。常见问题如下:

  • redis有哪些数据结构,你用过哪些,为什么要用这些数据结构,你的思考是什么。
  • redis实现相关,比如它是event driven的,使用了io多路复用。redis可以执行lua脚本来做一些复杂的原子操作,但是不要把一些耗时的操作放在lua里面,否则block其他的命令就麻烦了。
  • 架构:一般来说nosql会和分布式的一些理论结合起来问,所以经常会问使用的这些数据库的架构是什么,为什么要这样设计,画一下简单的架构图。
  • 这些数据库对ACID的支持怎么样,你是怎么看待这些问题的。
  • 分布式锁的问题,可以参考一下这篇文章
  • 这些数据库之间有什么区别,什么情况会选哪种数据库。考虑的方向是:有没有一些ACID的需求;是否需要持久化;索引的情况等。

1.5.分布式理论

这个可能就比较泛了,cap理论、分布式事务(两阶段提交等)、一致性算法和协同算法等。这些可能更多的是看自己的喜好了,因为理解起来真的是比较困难。

2.简历

这个就更加重要了,简历是一个人的门面。对一些没有大型互联网公司、没有比较好的学历的人来说,一份好的简历就更加重要了,毕竟你比别人少了两个加分项。针对我收的简历,我列举一下容易出现的问题。

  • 排版:排版是一个人思路是否清晰的体现,一份好的简历最好能够模块话。这样面试官可以非常容易的找到自己想要的东西。不要把不一样的东西混在一起,上次收的一份简历,个人技能和基本信息混在一起,让人看了就不是很舒服。
  • 技能:可以像我上面那样,把技能分成几块。每一块最好能够展开一下,说一些比较具体的内容,而不是词语简单的堆砌。比如Java多线程,这个词就可以稍微的展开一下,可以写AbstractQueuedSynchronizer等;这样面试官起码知道你是有看过源代码的,比你只说看过源代码会好一些。
  • 项目:项目不仅仅写项目的内容,要谈谈遇到的什么问题,你是怎么思考和解决的。不是简单的写自己用了缓存就完事,要思考一下为什么这个地方要用缓存,这种缓存方案会不会有问题。我收到的简历里面比较普遍的问题是:把那个项目名字换成一个外包项目,完全没有违和感,太笼统了,太万金油了。像是在记流水账,把做的什么功能往那一扔就不管了,你说这让别人怎么评估。
  • 针对jd做一些优化:有一些jd是需要特殊背景的(例如金融行业),这个时候就需要思考这个行业的难点了,否则如何能够胜任呢?以金融为例:你是如何保证服务不出错的,如何设计保证幂等的,消息队列如何保证不丢的(我随便举的例子,可能不是很恰当,因为我也不太懂)

3. 慎重对待每一次内推机会

很多人不重视内推的机会,觉得不过大不了下次再来。你要知道很多公司都是有锁定期的,半年到一年不等。也就是说面试官觉得你还需要提升,那么意味着你在半年到一年的时间里面,可能无法再投递这个公司了。我们每一个人又有多少个半年、一年呢?当你工作3年之后,业界可能对你的要求不一样了,5年之后又不一样了,到时候你又过不了怎么办?所以一定要认真的对待每一次机会,这都是血泪的教训。

分享几张技能图,方便大家查漏补缺。掌握了这些,对于要求3~5年工作经验的岗位应该问题不大。

Java后台求职小建议_第2张图片

Java后台求职小建议_第3张图片

 

Java后台求职小建议_第4张图片

Java后台求职小建议_第5张图片

 

Java后台求职小建议_第6张图片

 

Java后台求职小建议_第7张图片

Java后台求职小建议_第8张图片

作者:Lorenzo
链接:https://zhuanlan.zhihu.com/p/41784501
来源:知乎
 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(面试)