今日到 58 面试,1 面就跪了。面试官也解释了 2 个原因:基础不好,值传递和引用传递的问题错了; jvm 调优经验不足(这我认)。我想吐槽的是,基础题并没错,2 个值都输出 main 函数中定义的( 0,aaa )。题如下:
public class Test05 {
private static void changeInt(int param) {
param = 1;
}
private static void changeString(String param) {
param = "bbb";
}
public static void main(String[] args) {
// int
int intParam = 0;
changeInt(intParam);
System.out.println(intParam);
// string
String stringParam = "aaa";
changeString(stringParam);
System.out.println(stringParam);
}
}
1
yizhimamong 2020-01-14 18:51:32 +08:00 via iPhone
正常,不过算是运气不好?
|
2
sgissb1 2020-01-14 18:53:03 +08:00
忽略,没意义。如果不是面试官无意识搞错的,就是过于自信搞出来的事情。
无意识搞错的面试官,提醒一下就够了。他们会跟着你的问题一起过一下看看。不过最终还是不值得去在意。 如果是过度自信的那种面试官,那基本最好闭嘴。自信这玩意搞不好就是自负的开始。 |
3
wysnylc 2020-01-14 19:01:38 +08:00
java 没有引用传递,只有值传递->https://blog.csdn.net/javazejian/article/details/51192130
|
4
imopf4 2020-01-14 19:07:03 +08:00
直接说出来,我就碰到过嘴死硬的领导,从来不说自己问题,就是错误都也要圆回来,真伺候不来。
|
5
capo 2020-01-15 09:35:32 +08:00 2
没进去说不定比进去了强
|
6
la2la 2020-01-15 09:58:08 +08:00
java 核心编程 4.5
``` 首先回顾一下在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。按 值调用( call by value) 表示方法接收的是调用者提供的值。而按引用调用( call by reference ) 表示方法接收的是调用者提供的变量地址。一个方法可以修改传递引用所对应的变量值, 而 不能修改传递值调用所对应的变量值。“ 按……调用”(call by) 是一个标准的计算机科学术语, 它用来描述各种程序设计语言(不只是 Java ) 中方法参数的传递方式(事实上,以前还有按 名调用( call by name), Algo 丨程序设计语言是最古老的高级程序设计语言之一, 它使用的就 是这种参数传递方式。不过,对于今天, 这种传递方式已经成为历史)。 Java 程序设计语言总是采用**按值调用**。也就是说, 方法得到的是所有参数值的一个拷 贝,特别是,方法不能修改传递给它的任何参数变量的内容。 ``` |
7
meepo3927 2020-01-15 11:37:50 +08:00
58 同城吗
em... |
8
daimubai 2020-01-15 12:59:24 +08:00
Java 只有值传递,对于基本类型传递的就是自身的值,将值赋给了 param,所以不会他的改变与 intParam 无关
对于引用类型传递的是对象的引用而不是对象,所以形参和实参指向的引用是同一份,但是由于 String 的特殊性,当重新赋值后会创建一个新的对象 |
11
ltoddy 2020-02-24 21:06:17 +08:00
我面试也好像遇到了, 关于微服务的服务注册与发现相关的问题, 我说 K8S 就能提供这个功能, 每个服务启动的时候会有固定的环境变量被设置, 其他服务能读取到进而获得集群内部虚拟网络分配给服务的 IP 地址, 面试官好像很不满意....
|