一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1700|回复: 19
收起左侧

新鲜谷歌面经 phone

[复制链接] |试试Instant~ |关注本帖
mark60616 发表于 2014-2-8 04:53:49 | 显示全部楼层 |阅读模式

2014(1-3月) 码农类 硕士 全职@Google - 网上海投 - 技术电面 |Other

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
刚刚面完,浓厚英国腔, 给我整懵了, 幸亏前一阵看福尔摩斯,不过挺起来还是比较困难, 人很nice, 超nice。
1.介绍项目,一个技术点,问半天,我跟他纠缠了半天,我最后告诉他, 我们做的跟你想的不是一回事,他无语了(确实不是一回事),他理解错了。
2.3个箱子3种球,lable全错, 每个箱子顶多 拿一次,如何将lable贴对! 开始懵了,后来才想起来 题目说lable guranteeed to be incorrect, 这才顿时发现,简单的一逼。
3.过程语言vs面向对象 介绍下区别。
4.多态是什么,好处是?
5.4种修饰符,如何使用?
6.private 机制
7.java 传值还是引用? 这个众说纷纭,望大神解答!
8.hashtable实现
然后告诉我下周三出结果,请问是不是 就意味着把我拒了啊,因为我看地里很多人 都说 马上就2面啊。。请教各位大神!-google 1point3acres
居然一个算法没有给我出!!!!!!!!!!!. 1point 3acres 璁哄潧
god bless me!

评分

1

查看全部评分

本帖被以下淘专辑推荐:

eaufavor 发表于 2014-2-21 02:53:00 | 显示全部楼层
没搞清pass什么东西就讨论传值传引用不科学
. 1point 3acres 璁哄潧
还是stackoverflow 总结的好 "Primitives are passed by value, and object references are passed by value. The objects themselves are never passed to a method"
回复 支持 1 反对 0

使用道具 举报

lhn9021 发表于 2014-2-8 05:30:02 | 显示全部楼层
没记错的话 object call by reference, primitives call by value
回复 支持 反对

使用道具 举报

 楼主| mark60616 发表于 2014-2-8 07:33:35 | 显示全部楼层

你说的没错 从结果上看是这样 . more info on 1point3acres.com
但还有一种说法是 统一穿value的拷贝,只不过 这个所谓value的定义不一样,原始类型是 值本身,ADT 传的是句柄。。求各位大神解答!
回复 支持 反对

使用道具 举报

weiguo 发表于 2014-2-9 04:42:51 | 显示全部楼层
mark60616 发表于 2014-2-7 18:33
你说的没错 从结果上看是这样
但还有一种说法是 统一穿value的拷贝,只不过 这个所谓value的定义不一样 ...

JAVA 应该传argument都是copy by value. 没有传reference这种方式的。传object也就是只是传的句柄。会在memory再复制一个句柄,只是里面放的还是指向原来那个object的地址。
请问lz一共电面了多久时间啊。
&&good luck~
回复 支持 反对

使用道具 举报

nerozeng 发表于 2014-2-9 05:00:27 | 显示全部楼层
java应该都是传的value,我记得head first in java上讲到过这点。
回复 支持 反对

使用道具 举报

 楼主| mark60616 发表于 2014-2-10 02:28:59 | 显示全部楼层
weiguo 发表于 2014-2-9 04:42
JAVA 应该传argument都是copy by value. 没有传reference这种方式的。传object也就是只是传的句柄。会在m ...
-google 1point3acres
45分钟 他介绍了自己介绍了5分钟 我介绍自己的项目5分钟 剩下的时间问了八道题。压力蛮大的。希望有好结果吧
回复 支持 反对

使用道具 举报

 楼主| mark60616 发表于 2014-2-10 02:31:01 | 显示全部楼层
nerozeng 发表于 2014-2-9 05:00
java应该都是传的value,我记得head first in java上讲到过这点。

嗯 我也看到过这个说法,不知道哪个对,话说纠结这个 是不是真的有很大的意义呢?
回复 支持 反对

使用道具 举报

ykcland 发表于 2014-2-10 09:30:34 | 显示全部楼层
thinking in java 里也是说只传值
回复 支持 反对

使用道具 举报

头像被屏蔽
whuwangyi 发表于 2014-2-10 11:40:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

wzf1943 发表于 2014-2-10 11:46:48 | 显示全部楼层
O'Reilly's Java in a Nutshell by David Flanagan (see Resources) puts it best: "Java manipulates objects 'by reference,' but it passes object references to methods 'by value.'"
回复 支持 反对

使用道具 举报

nerozeng 发表于 2014-2-11 12:09:05 | 显示全部楼层
mark60616 发表于 2014-2-10 02:31
嗯 我也看到过这个说法,不知道哪个对,话说纠结这个 是不是真的有很大的意义呢?
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
主要是传object的时候这个值实际上是个类似引用的东西,感觉有点绕。。。我个人觉得记住就行了,深究的话意义可能不是特别大。。。
回复 支持 反对

使用道具 举报

Lisepher 发表于 2014-2-15 01:56:08 | 显示全部楼层
java传object就类似于C++的pass pointer to object吧
回复 支持 反对

使用道具 举报

analog123 发表于 2014-2-15 14:30:12 | 显示全部楼层
java应该一律都是传值的,和C++里面可以传引用的区别可以用一个例子来说明:

//java
public void replace(A a) {
       A newInstance = new A();
       a = newInstance;. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
}

这种情况下如果我们在main函数里面创建一个A的实例a,然后把它传进replace()里面,即使replace()里面给a重新赋值了一个新的class A的object,实际的a指向的object也不会改变,因为java里面都是传值的,replace()里面实际被操作的是a的一个副本。

//C++
void replace(A*& a) {
       A* newInstance = new A;. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
       a = newInstance;
}

C++的话你定义一个这样的replace(),把a传进这个方法后实际的a指向的object也会变成newInstance,因为我们传了个A类型的指针的引用,所以replace()里面实际上再对a直接进行操作。

话说我感觉C++能传引用这点还是很爽的。。最近用java刷题有好些题如果能传引用的话会特别舒服。。
回复 支持 反对

使用道具 举报

mhbkb 发表于 2014-2-20 23:44:55 | 显示全部楼层
100% pass by value
回复 支持 反对

使用道具 举报

jiebour 发表于 2015-7-27 13:40:55 | 显示全部楼层
                Hashtable<Integer, Integer> h = new Hashtable<Integer, Integer>();
                h.put(1, 2);. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
                h.put(2, 3);
                replace(h);
                System.out.println(h.get(2));//这里输出了4!!!


         public static void replace(Hashtable<Integer, Integer> h){
                 h.put(2, 4);. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
         }
. 1point 3acres 璁哄潧
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
不是说传的是value嘛?谁来解释下。。。。。
回复 支持 反对

使用道具 举报

Atomic123 发表于 2015-7-31 12:20:10 | 显示全部楼层
java is pass by value, for self-defined objects, java will pass the copy of the reference.
回复 支持 反对

使用道具 举报

mmliu 发表于 2015-7-31 17:44:36 | 显示全部楼层
nerozeng 发表于 2014-2-11 12:09
主要是传object的时候这个值实际上是个类似引用的东西,感觉有点绕。。。我个人觉得记住就行了,深究的话 ...
.1point3acres缃
这个意义还是挺大的
. Waral 鍗氬鏈夋洿澶氭枃绔,
比如我们经常做的 链表题,给了你一个 header 作为头节点,然后把这个 header 传到了一个函数里,函数里面我们改变了head的值,例如不断循环知道指到空:
  1. void length(ListNode header){. 鍥磋鎴戜滑@1point 3 acres
  2.   int len = 0;

  3.   while(header != null){
  4.     header = head.next;
  5.     len++;
  6.   }. more info on 1point3acres.com

  7.   return len;
  8. }
复制代码
在调用了这个length() 方法的函数里,我们还能放心的用 header 吗? 它是不是还是指到链表头部?

答案是肯定的,我们在外面还是能放心的使用header, 因为java里面,指向对象的变量实际上类似指针,header作为一个指向内存的指针,在作为参数传递时,我们实际传递的是 header 这个指针的拷贝,我们在调用的函数里修改了拷贝,并不影响原header的指向。
回复 支持 反对

使用道具 举报

mmliu 发表于 2015-7-31 17:55:57 | 显示全部楼层
三个箱子,三种球的没弄太懂
.鏈枃鍘熷垱鑷1point3acres璁哄潧
比如箱子实际顺序应该是:1,2,3
那贴错的有两种:2,3,1 或者 3,1,2

反过来也是,贴错成1,2,3
对应成正确的可能是2,3,1 或者 3, 1, 2
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
所以结果是不唯一么
回复 支持 反对

使用道具 举报

wenqiang88 发表于 2015-7-31 23:52:59 | 显示全部楼层
Java应该是pass by value
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-11 20:18

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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