123
返回列表 发新帖
楼主: keluotete
跳转到指定楼层
上一主题 下一主题
收起左侧

Google onsite七月面经

🔗
liurudahai 2016-10-3 06:04:39 | 只看该作者
全局:
LynKang 发表于 2016-10-3 01:48
首先在Java里,String是immutable的。如果你要manipulate一个String,一旦产生了一点变化,你都需要生成 ...

个人感觉这题只会问C++用户。。。。问JAVA用户一点意义都没有。。。
回复

使用道具 举报

🔗
liurudahai 2016-10-3 06:07:40 | 只看该作者
全局:
keluotete 发表于 2016-9-28 07:07
用hashtable存已经访问的路径吧

hashtable 怎么优化?这个感觉从后往前遍历一遍字符串,相当于十进制转二十六进制就完了,也没啥记忆化搜索或者DP的东西啊
回复

使用道具 举报

🔗
liurudahai 2016-10-3 06:10:25 | 只看该作者
全局:
virpro 发表于 2016-10-3 02:09
StringBuilder的toSting调用的就是new String()所以应该是不行。按照你的思路,貌似只能用"" + char1 + c ...

不能用+,Java的STRING如果+其实是抛弃原来那个STRING,新建了一个对象
回复

使用道具 举报

🔗
liurudahai 2016-10-3 06:12:48 | 只看该作者
全局:
LynKang 发表于 2016-10-3 01:48
首先在Java里,String是immutable的。如果你要manipulate一个String,一旦产生了一点变化,你都需要生成 ...

用TRIE每次加入TRING,比如OFFSET是20,那还要跑到ROOT的第二十层CHILD那去,速度很慢啊,我觉得是不是就用STRING BUFFER就好了,如果OFFSET超过STRING BUFFER现长度,就用空格补齐,删除的话就把OFFSET那一部分设置成空格。。。
回复

使用道具 举报

🔗
LynKang 2016-10-3 06:39:41 | 只看该作者
全局:
liurudahai 发表于 2016-10-3 06:04
个人感觉这题只会问C++用户。。。。问JAVA用户一点意义都没有。。。

这个很有意义啊!
Java为什么要把String设计成immutable的?这是很基本的program paradigm的问题。
如果这个基本知识点不能理解,那么整个知识体系都是建立在模棱两可的认知上,就不好了。
回复

使用道具 举报

🔗
LynKang 2016-10-3 06:41:41 | 只看该作者
全局:
liurudahai 发表于 2016-10-3 06:12
用TRIE每次加入TRING,比如OFFSET是20,那还要跑到ROOT的第二十层CHILD那去,速度很慢啊,我觉得是不是就 ...

你难道要返回StringBuffer吗?这不能解决任何问题。
如果题目要求尽量不要生成额外的instance,占用内存空间,那么你就得在时间效率上做牺牲。
回复

使用道具 举报

🔗
LynKang 2016-10-3 06:44:10 | 只看该作者
全局:
LynKang 发表于 2016-10-3 06:41
你难道要返回StringBuffer吗?这不能解决任何问题。
如果题目要求尽量不要生成额外的instance,占用内存 ...

我觉得这题的考点不在于你怎么把这个String操作的逻辑实现出来。因为这一点也不难。你要考虑的是你的操作对于真实世界下jvm的性能有什么影响。你要知道为什么生成额外的instance需要被规避。如何去规避。
回复

使用道具 举报

🔗
LynKang 2016-10-3 06:46:23 | 只看该作者
全局:
liurudahai 发表于 2016-10-3 06:10
不能用+,Java的STRING如果+其实是抛弃原来那个STRING,新建了一个对象

String不会被抛弃,它会一直存在于heap里,直到被GC。你永远也不知道GC会在什么时候发生。频繁的GC会严重影响你的程序性能。
回复

使用道具 举报

🔗
LynKang 2016-10-3 06:54:37 | 只看该作者
全局:
LynKang 发表于 2016-10-3 06:41
你难道要返回StringBuffer吗?这不能解决任何问题。
如果题目要求尽量不要生成额外的instance,占用内存 ...

在Java的API层面上思考问题是不够的,我们需要看到这个API背后的东西。毕竟Java也不是一个完美的语言,后来有很多设计都是为了弥补过去的不足,但是为了backward compatibility,有很多坏东西被保存了下来。官方的API文档还有很多有误的地方。这就是为什么有Apache的commons的库和Google Guava。但是Java整体的走向是好的,马上Java9要出了,又是很多惊喜。
回复

使用道具 举报

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

本版积分规则

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