Java工程师中技术面中考察的占比如下:
需要注意的是:此图不绝对,因为实际面试中面试官会根据自己的简历去问,比如项目多可能就问的项目多一些,或者哪里精通可能面试官就多去问这些。而且此图是根据题库数据整理出来,并不是根据实际单场面试整理,比如基础部分不会考那么多,会从中抽着考
但是面试中必考的点且占比非常大的有Java基础和算法。
决定是否能拿sp offer(高薪offer)以及是否进名企的是项目和算法。
可以看出,算法除了是面试必过门槛以外,更是决定自己是否能进名企或高薪offer的决定性因素。
面试技巧
面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察专业技术水平的,hr面的话主要是看个人的综合素质以及家庭情况符不符合公司要求,一般来讲,技术的话只要通过了技术面hr面基本上是没有问题。
主要来说技术面,技术面的话主要是考察专业技术知识和水平,可以有一定的技巧的,但是一定是基于有一定的能力水平的。
所以也慎重的告诉大家,技巧不是投机取巧,是起到辅助效果的,技术面最主要的还是要有实力,这里是基于实力水平之上的技巧。
这里告诉大家面试中的几个技巧:
1、简历上做一个引导: 在词汇上做好区分,比如熟悉Java,了解python,精通c语言
这样的话对自己的掌握程度有个区分,也好让面试官有个着重去问,python本来写的也只是了解,自然就不会多问你深入的一些东西了。
2、在面试过程中做一个引导:
面试过程中尽量引导到自己熟知的一个领域,比如问到说一下DNS寻址,然后简单回答,可以说一句,自己对这块可能不是特别熟悉,对计算机网络中的运输层比较熟悉,如果有具体的,甚至可以再加一句,比如TCP和UDP
这样的话可以把整个面试过程往自己熟知的地方引导,也能更倾向于体现出自己的优势而不是劣势,但是此方法仅限于掌握合适的度,比如有的知识点是必会的而自己想往别处引就有点说不过去了,比如说几个Java的关键字,一个也说不上来,那可能就真的没辙了。
java关键字:Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时
又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,
他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、
方法名、类名、包名和参数。
abstract 表明类或者成员方法具有抽象属性
assert 断言,用来进行程序调试
boolean 基本数据类型之一,声明布尔类型的关键字
break 提前跳出一个块
byte 基本数据类型之一,字节类型
case 用在switch语句之中,表示其中的一个分支
catch 用在异常处理中,用来捕捉异常
char 基本数据类型之一,字符类型
class 声明一个类
const 保留关键字,没有具体含义
continue 回到一个块的开始处
default 默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现
do 用在do-while循环结构中
double 基本数据类型之一,双精度浮点数类型
else 用在条件语句中,表明当条件不成立时的分支
enum 枚举
extends 表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口
final 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量
finally 用于处理异常情况,用来声明一个基本肯定会被执行到的语句块
float 基本数据类型之一,单精度浮点数类型
for 一种循环结构的引导词
goto 保留关键字,没有具体含义
if 条件语句的引导词
implements 表明一个类实现了给定的接口
import 表明要访问指定的类或包
instanceof 用来测试一个对象是否是指定类型的实例对象
int 基本数据类型之一,整数类型
interface 接口
long 基本数据类型之一,长整数类型
native 用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的
new 用来创建新实例对象
package 包
private 一种访问控制方式:私用模式
protected 一种访问控制方式:保护模式
public 一种访问控制方式:共用模式
return 从成员方法中返回数据
short 基本数据类型之一,短整数类型
static 表明具有静态属性
strictfp 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范
super 表明当前对象的父类型的引用或者父类型的构造方法
switch 分支语句结构的引导词
synchronized 表明一段代码需要同步执行
this 指向当前实例对象的引用
throw 抛出一个异常
throws 声明在当前定义的成员方法中所有需要抛出的异常
transient 声明不用序列化的成员域
try 尝试一个可能抛出异常的程序块
void 声明当前成员方法没有返回值
volatile 表明两个或者多个变量必须同步地发生变化
while 用在循环结构中
关键字一律用小写字母标识,按其用途划分为如下几组。
(1)用于数据类型。
用于数据类型的关键字有 boolean、byte、char、 double、 false、float、int、long、new、short、true、void、instanceof。
(2)用于语句。
用于语句的关键字有break、case、 catch、 continue、 default 、do、 else、 for、 if、return、switch、try、 while、 finally、 throw、this、 super。
(3)用于修饰
用于修饰的关键字有 abstract、final、native、private、 protected、public、static、synchronized、
transient、 volatile。
(4)用于方法、类、接口、包和异常。
用于方法、类、接口、包和异常的关键字有 class、 extends、 implements、interface、 package、import、throws。
还有些关键字,如cat、 future、 generic、innerr、 operator、 outer、rest、var等都是Java保留的没有意义的关键字。
另外,Java还有3个保留字:true、false、null。它们不是关键字,而是文字。包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。
3、在自我介绍中做一个引导:
一般面试的开头都会有一个自我介绍,在这个位置也可以尽情的为自己的优势方面去引导。
4、面试过程中展示出自信:
面试过程中的态度也要掌握好,不要自卑,也不要傲娇,自信的回答出每个问题,尤其遇到不会的问题,要么做一些引导,实在不能引导也可以先打打擦边球,和面试官交流一下问题,看起来像是没听懂题意,这个过程也可以再自己思考一下,如果觉得这个过程可以免了的话也直接表明一下这个地方不太熟悉或者还没有掌握好,千万不要强行回答。
面试前的准备:
最重要的肯定是系统的学习了,有一个知识的框架,基础知识的牢靠程度等。
其中算法尤其重要,越来越多公司还会让你现场或者视频面试中手写代码;
另一大重要的和加分项就是项目,在面试前,一定要练习回答自己项目的三个问题:
这是一个怎样的项目
用到了什么技术,为什么用这项技术(以及每项技术很细的点以及扩展)
过程中遇到了什么问题,怎么解决的。