以下文章来源于公众号“程序员求职之路”
两年前,和同事小T一起进入了公司的Java开发部门。
看代码了解情况、查询数据库到做个小功能,我通过这个流程我慢慢熟悉公司的开发套路,个把月后开始接触其他复杂功能。
就在我还为平均工资奋斗的时候,无意间听到小T的月薪已经上了23k,好奇和羡慕驱使我赶忙向他请教一二。
原来这一年里受疫情影响,在家办公的他经常抽空向各大公司投offer、约面试。
“倒也不是为了跳槽,就是想快速了解一下现在的行业标准。”
他表示大厂的HR一定程度上就是技术要求的风向标,自己就对照着要求缺啥补啥。
掌握了前沿的业务能力,接触项目的时候也是多了一分得心应手,和老板谈薪也有了一点筹码。
撇开简历设计和面试准备不谈(当然你如果好奇这部分内容可以关注我们并查看早期文章,我们都提供了相关意见)
小T罗列了以下面试Java岗位需要掌握的知识点:
■ 包、内部类与外部类
包允许将类组合成较小的单元(类似文件夹),使得找到和使用相应的类文件更容易。所以一般编译后的结构是跟包结构一模一样的,这样的结构保证了import时能找到正确的class引用包。import一般加上全路径,并且使用.*时只包含当前目录的所有类文件,不包括子目录。
内部类可以有全部访问权限,因为它的概念就是一个成员变量,所以访问权限设置与一般的成员变量相同。
外部类只有public和default两种修饰,要么全局可访问,要么包内可访问。
非静态内部类是外部类的一个成员变量,只跟外部类的实例有关。
静态内部类是独立于外部类存在的一个类,与外部类实例无关,可以通过外部类.内部类直接获取Class类型。
■ Object类和Class类
Object类和Class类没有直接的关系。
Object类是一切java类的父类,对于普通的java类,即便不声明,也是默认继承了Object类。典型的有Object类中的toString()方法。
Class类是用于java反射机制的,一切java类,都有一个对应的Class对象,他是一个final类。Class 类的实例表示,正在运行的 Java 应用程序中的类和接口。
■ javac和java
javac可以将java源文件编译为class字节码文件,如 javac HelloWorld.java。
java 可以运行class字节码文件,如 java HelloWorld。
■ 反射
Java反射包reflection提供对Class,Method,field等信息的封装类型。
它赋予jvm动态编译的能力,失去反射类的元数据信息只能用静态编译的方式实现。
反射是Java中最强大的技术之一,应用范围广,很多优秀的开源框架都是通过反射完成的,比如大部分最初的注解框架。
后来因为java反射影响性能,所以被运行时注解APT替代了。
■ 动态代理
通过实现 InvocationHandler 接口创建自己的调用处理器。
通过为 Proxy 类指定 ClassLoader 对象和一组 interface 来创建动态代理类。
通过反射机制获得动态代理类的构造函数,其唯一参数类型是调用处理器接口类型。
通过构造函数创建动态代理类实例,构造时调用处理器对象作为参数被传入。
■ 多线程
多线程是从软件或者硬件上实现多个线程并发执行的技术。这里用几道面试真题更好说明相关知识点:
1 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
这个线程问题通常会在第一轮或电话面试阶段被问到,目的是检测你对“join”方法是否熟悉。
2 在java中wait和sleep方法的不同?
最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。
3 Java中的volatile关键是什么作用?怎样使用它?在Java中它跟synchronized方法有什么不同?
自从Java 5和Java内存模型改变以后,基于volatile关键字的线程问题越来越流行。应该准备好回答关于volatile变量怎样在并发环境中确保可见性。
4 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?
当你调用start()方法时你将创建新的线程,并且执行在run()方法里的代码。但是如果你直接调用run()方法,它不会创建新的线程也不会执行调用线程的代码
5 在Java中CycliBarriar和CountdownLatch有什么区别?
CyclicBarrier可以重复使用已经通过的障碍,而CountdownLatch不能重复使用。
Java作为一门随时代快速发展的计算机语言程序,涉及生产生活的各领域、多方面。
随之衍生出不计其数的知识点,这里只是简单罗列几点仅做抛砖引玉的作用,希望大家对自我的及时学习引起重视。
现在关注我们,就可在后台回复「面试题库」领取大厂的Java岗位面试真题哦。
学习,什么时候开始都不算晚。
更多内容也请关注
程序员求职之路
一个为程序员量身定做的求职公众号
给你贴心有效的大厂面试真题
面试干货、职业发展干货、简历模版