作者tbpfs ( http://pse.is/tbpfs )
看板Soft_Job
标题Re: [心得] 28岁国中毕业资策会结训
时间Sun Oct 4 23:04:45 2020
: 课程非常非常的赶(听说是4年大学程式课缩在5个月里面)
不是这样的
是不一样的东西
http://l.ovoy.click/w99bx
: 技术主管问我String能写==吗
: 我那时候紧张到不行 就先回答主管不能 因为这样很雷
: 技术主管眼睛就眯起来然後"...恩?"的表情看我
: 当下已经做好被赶出去的心理准备了XD
: 又接着继续问我MVC,我回答完後就接着讲String的那部分
: 接着聊天2小时,最後有拿到offer
关於这一题,我先assume题目是java因为後面提到是物件导向
这题有分两个层次
一般而言,物件的比对会用equals
Java教科书也会教说不能用==
但,我怎麽有印象,Java实作中,为了节省记忆体
所以其实只要是定义好的字串,他会是指到同一个位置的
既然是同一块位置,那==应该是可以正确的回答
所以其实这一题真正的答案是:
你不要去new他,结果会是对的
细节有点复杂Ho 我直接贴我google到的结果
http://l.ovoy.click/v6fc8
--
紫枫碎碎念
YouTube频道:
https://www.youtube.com/user/tbpfs
FB粉专:
https://www.facebook.com/tbpfs2/
blog:
http://tbpfs1.blogspot.com/
从
零开始学会写
程式:
http://l.ovoy.click/itiron
软体工程师薪资大解密:
http://l.ovoy.click/R3M42
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.174.50.22 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1601823887.A.888.html
※ 编辑: tbpfs (1.174.50.22 台湾), 10/04/2020 23:06:35
※ 编辑: tbpfs (1.174.50.22 台湾), 10/04/2020 23:08:41
1F:→ BlacksPig: 物件比对用双等号,值的比对用equal,不知道java物件可 10/04 23:47
2F:→ BlacksPig: 以试着印出hashcode来了解比对的物件储存的是否同一个 10/04 23:47
3F:→ BlacksPig: 记忆体位置 10/04 23:47
4F:→ tbpfs: 要override hashCode() 10/05 00:04
5F:推 kurtsgm: string compare这种东西其实就是看语言 有些可 有些不行 10/05 01:27
6F:推 MyNion: C#若我记得没错,是不给控制参考型别的记忆体位置的 10/05 01:46
7F:→ MyNion: 所以原PO中的==,在C#的字串是可以直接用的 10/05 01:47
8F:→ MyNion: 有继承IComparable并实作之的类别就可以用 10/05 01:48
9F:推 freshlemon: 1.浓缩四年课程这件事情,其实专业一点的人都知道,大 10/05 02:25
10F:→ freshlemon: 学还会上一些计算机概论、资料结构演算法等等课程,所 10/05 02:25
11F:→ freshlemon: 以其实很多资策会的同学也知道情况,老师上课都有说明 10/05 02:25
12F:→ freshlemon: 。 10/05 02:25
13F:→ freshlemon: 2.Java有字串池机制,用String=双引号这种方法,程式 10/05 02:25
14F:→ freshlemon: 会在字串池中寻找有没有相同的字串,如果没有会新增一 10/05 02:25
15F:→ freshlemon: 个新的字串在字串池中,如果有两者的物件参考变数会是 10/05 02:25
16F:→ freshlemon: 一样的,因此使用双引号写法下==是行得通的,但是如果 10/05 02:25
17F:→ freshlemon: 今天使用new方法则字串会存在Heap,物件参考变数是不 10/05 02:25
18F:→ freshlemon: 同的,要使用equals,因为String的equals被Override了 10/05 02:25
19F:→ freshlemon: ,因此用equals 就是在比对字串的内容。原文他想表示 10/05 02:25
20F:→ freshlemon: 应该是自己很紧张,所以这麽简单的题目都答错,不过感 10/05 02:25
21F:→ freshlemon: 觉他後来有补充,所以录取这样吧~ 10/05 02:25
22F:推 qrtt1: 追求正确又完整的话,要答完整个 equality 的机制 10/05 08:10
23F:推 nimaderto: 小弟记得 c++ 在 include string 时可以 没有的时候不 10/05 09:39
24F:→ nimaderto: 行 10/05 09:39
25F:推 plsmaop: C++ 要分 c++ std string 还是 c string 10/05 09:43
26F:推 sasaki5221: std string可以直接比,cstring要用strcmp ...吧 10/05 10:43
28F:→ elements: 跟物件也没有关系。是 == operator的运作观念。 10/05 12:29
29F:→ dreamnook: 同楼上 10/05 17:05
30F:→ ssccg: C#是因为有operator override,其他跟java是一样的 10/06 04:48
31F:→ ssccg: overload 10/06 04:49
32F:→ ssccg: 然後不要随便用「实作中」怎样来写程式,除非你现在是需要 10/06 04:51
33F:→ ssccg: micro-optimization,不然照着规格而不是实作写才不会埋雷 10/06 04:51
34F:→ ssccg: 字串池只限literal,但如果能这麽确定变数来源是literal那 10/06 04:54
35F:→ ssccg: 也许根本该用enum,否则字串来源这麽多,StringBuilder、 10/06 04:56
36F:→ ssccg: 各种编解码,不是只有看到new才有new 10/06 04:57
37F:推 xrururururu: 推 10/06 23:34
38F:→ ChungLi5566: Bad practice的问题 没有对错 只有好跟不好 10/07 15:22