楼主: lynlion
跳转到指定楼层
上一主题 下一主题
收起左侧

巨硬728 hiring event

🔗
linlin1990 2017-8-3 00:51:39 | 只看该作者
全局:
lynlion 发表于 2017-8-2 14:05
谢谢,感觉凶多吉少,可能面试官不一样把,我基本都是中等难度的题目,他也是728的吗,他有消息了吗

哦不过他不是728的。。是之前的。。。
回复

使用道具 举报

🔗
hwd2000 2017-8-3 01:19:44 | 只看该作者
全局:
“我和他解释了java里是pass by value的”
你这个解释是错误的。如果parameter是object,pass by reference (也就是c里的指针)。显然面试官对你的解释有异议。虽然c#语法可以用ref,但是在不用的情况下,parameter的用法和java是一样的。
回复

使用道具 举报

🔗
 楼主| lynlion 2017-8-3 02:12:25 | 只看该作者
全局:
hwd2000 发表于 2017-8-3 01:19
“我和他解释了java里是pass by value的”
你这个解释是错误的。如果parameter是object,pass by referenc ...

首先java 永远是pass by value的,传一个object进去也是pass by value的,直接对这个object改变是不会改变原来的object,例如传一个Treenode pre到下一层递归,在里面你执行pre=null,上一层里的pre是不会改变的,只有执行pre.next = null,上一层的pre的next才会改变,这个方法我和他提了,显然不是他想要的
回复

使用道具 举报

🔗
newgod2500 2017-8-3 02:58:56 | 只看该作者
全局:
最初的梦想2013 发表于 2017-8-2 21:02
这么多三哥三姐啊,看来巨硬也被烙印占领了,亚麻也是乌压压一大片烙印

因为老大们都是印度人。手底下自然一堆三三。。况且巨硬现在ceo本来就是从azure出来的。。。 office, azure是出了名多烙印的。 只能指望一下bing了。
回复

使用道具 举报

🔗
hwd2000 2017-8-3 03:11:25 | 只看该作者
全局:
lynlion 发表于 2017-8-3 02:12
首先java 永远是pass by value的,传一个object进去也是pass by value的,直接对这个object改变是不会改 ...

你这个解释放到c里面也成立。给你举个例子
void add(int* a) {
   a = NULL;
}

int x = 1;
add(&x);

这个方法执行完了,a现在是啥?当然还是1。要是非要套你那个说法,其实c也是pass by value,为啥?因为地址也是value,直接放在call stack里了。但是没有人认为这是pass by value,因为地址就是地址,不是value。

补充内容 (2017-8-3 03:12):
说错了,是“x现在是啥?”
回复

使用道具 举报

🔗
koga 2017-8-3 03:49:35 | 只看该作者
全局:
请问你是什么时候投的
是18年毕业么
这么快就有onsite了?
回复

使用道具 举报

🔗
snakech 2017-8-3 03:55:27 | 只看该作者
全局:
lynlion 发表于 2017-8-3 02:12
首先java 永远是pass by value的,传一个object进去也是pass by value的,直接对这个object改变是不会改 ...

我对这个说法表示异议,有可能是我没理解你的说法,也有可能我一直用的pass reference是假的
回复

使用道具 举报

🔗
 楼主| lynlion 2017-8-3 04:17:24 | 只看该作者
全局:
hwd2000 发表于 2017-8-3 03:11
你这个解释放到c里面也成立。给你举个例子
void add(int* a) {
   a = NULL;

我建议你好好看看什么叫pass by value 和pass by reference,不懂就不要误导别人,既然说到c++,请你说一下下面这个是pass by value 还是pass by refernce,打印的结果是什么,如何在java 中实现?

void addOne(int &y) // y is a reference variable
{
    y = y + 1;
} // y is destroyed here

int main()
{
    int x = 5;
    std::cout << "x = " << x << '\n';
    addOne(x);
    std::cout << "x = " << x << '\n';
    return 0;
}
回复

使用道具 举报

🔗
 楼主| lynlion 2017-8-3 04:22:37 | 只看该作者
全局:
snakech 发表于 2017-8-3 03:55
我对这个说法表示异议,有可能是我没理解你的说法,也有可能我一直用的pass reference是假的

java一直是pass by value,你用的pass by reference确实是假的。

http://www.geeksforgeeks.org/g-f ... ctly-pass-by-value/
回复

使用道具 举报

🔗
hwd2000 2017-8-3 04:47:28 | 只看该作者
全局:
lynlion 发表于 2017-8-3 04:17
我建议你好好看看什么叫pass by value 和pass by reference,不懂就不要误导别人,既然说到c++,请你说一 ...

我要承认,我的c++的知识已经丢的差不多了。你的例子才是真正的pass by reference。但是说到java,你硬要说java不能pass by reference,我就只能用以下你的c++代码对应java的实现来回复你(当然还有其它更优雅的实现)。你要怎么坚持是你自己的事情,但是未必能被别人认同,因为这个话题从Java诞生开始一直都没讨论完。
    private static void addOne(int[] a) {
        a[0]++;
    }

     public static void main(String []args){
         int[] x = {10};
         addOne(x);
         System.out.println("x=" + x[0]);
     }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表