本文已收录至Java面试网站:https://topjavaer.cn
大家好,我是大彬
最近百度年终开奖了。
百度年终奖的标准是4个月月薪,但实际能拿到多少,与员工的绩效紧密相关。百度将员工绩效分为五个等级:E(优秀)、M+(良好)、M(达标)、M-(待改进)、I(不合格)
。其中:
-
E级绩效的系数在1.4 - 1.6之间,对应年终奖
5.6~6.4
个月; -
M+级系数为1.2 - 1.4,对应年终奖
4.8~5.6
个月; -
M级系数为0.8 - 1.0,对应年终奖
3.2~4
个月; -
M-级系数降至0.4,且从去年开始,绩效M-和I的员工直接不参与年终奖分配,
拿了M-也没有年终奖
了; -
I级系数为0,不但没有年终奖,还可能面临被
裁员
的风险。
员工的收入与个人表现和部门业绩
相关。不同部门之间的绩效系数也存在差异。例如,移动生态群(MEG)的M绩效系数普遍在0.8,而智能云事业群(ACG)的M+绩效较多,系数为1.2。技术中台(TPG)则相对较低,M绩效系数在0.7-0.8之间,智能驾驶群(IDG)的M系数也在0.7-0.8之间。
不知道有没有百度的同学,可以在评论区分享一下今年的年终给不给力~
最后再分享一道百度校招Java开发岗的面试题:
String 为什么不可变?
先看看什么是不可变的对象。
如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。
接着来看Java8 String类的源码:
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
/** Cache the hash code for the string */
private int hash; // Default to 0
}
从源码可以看出,String对象其实在内部就是一个个字符,存储在这个value数组里面的。
value数组用final修饰,final 修饰的变量,值不能被修改。因此value不可以指向其他对象。
String类内部所有的字段都是私有的,也就是被private修饰。而且String没有对外提供修改内部状态的方法,因此value数组不能改变。
所以,String是不可变的。
那为什么String要设计成不可变的?
主要有以下几点原因:
- 线程安全。同一个字符串实例可以被多个线程共享,因为字符串不可变,本身就是线程安全的。
- 支持hash映射和缓存。因为String的hash值经常会使用到,比如作为 Map 的键,不可变的特性使得 hash 值也不会变,不需要重新计算。
- 出于安全考虑。网络地址URL、文件路径path、密码通常情况下都是以String类型保存,假若String不是固定不变的,将会引起各种安全隐患。比如将密码用String的类型保存,那么它将一直留在内存中,直到垃圾收集器把它清除。假如String类不是固定不变的,那么这个密码可能会被改变,导致出现安全隐患。
- 字符串常量池优化。String对象创建之后,会缓存到字符串常量池中,下次需要创建同样的对象时,可以直接返回缓存的引用。
既然我们的String是不可变的,它内部还有很多substring, replace, replaceAll这些操作的方法。这些方法好像会改变String对象?怎么解释呢?
其实不是的,我们每次调用replace等方法,其实会在堆内存中创建了一个新的对象。然后其value数组引用指向不同的对象。
最后分享一份大彬精心整理的大厂面试手册,包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等高频面试题,非常实用,有小伙伴靠着这份手册拿过字节offer~
需要的小伙伴可以自行下载:
https://mp.weixin.qq.com/s/Y7EaHlwl04ZgA3sdlnUlhw
围观朋友⭕:dabinjava