Re: [心得] 28歲國中畢業資策會結訓

看板Soft_Job作者 ( http://pse.is/tbpfs )時間3年前 (2020/10/04 23:04), 3年前編輯推噓9(9029)
留言38則, 15人參與, 3年前最新討論串2/2 (看更多)
: 課程非常非常的趕(聽說是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://www.ptt.cc/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

10/04 23:47, 3年前 , 1F
物件比對用雙等號,值的比對用equal,不知道java物件可
10/04 23:47, 1F

10/04 23:47, 3年前 , 2F
以試著印出hashcode來了解比對的物件儲存的是否同一個
10/04 23:47, 2F

10/04 23:47, 3年前 , 3F
記憶體位置
10/04 23:47, 3F

10/05 00:04, 3年前 , 4F
要override hashCode()
10/05 00:04, 4F

10/05 01:27, 3年前 , 5F
string compare這種東西其實就是看語言 有些可 有些不行
10/05 01:27, 5F

10/05 01:46, 3年前 , 6F
C#若我記得沒錯,是不給控制參考型別的記憶體位置的
10/05 01:46, 6F

10/05 01:47, 3年前 , 7F
所以原PO中的==,在C#的字串是可以直接用的
10/05 01:47, 7F

10/05 01:48, 3年前 , 8F
有繼承IComparable並實作之的類別就可以用
10/05 01:48, 8F

10/05 02:25, 3年前 , 9F
1.濃縮四年課程這件事情,其實專業一點的人都知道,大
10/05 02:25, 9F

10/05 02:25, 3年前 , 10F
學還會上一些計算機概論、資料結構演算法等等課程,所
10/05 02:25, 10F

10/05 02:25, 3年前 , 11F
以其實很多資策會的同學也知道情況,老師上課都有說明
10/05 02:25, 11F

10/05 02:25, 3年前 , 12F
10/05 02:25, 12F

10/05 02:25, 3年前 , 13F
2.Java有字串池機制,用String=雙引號這種方法,程式
10/05 02:25, 13F

10/05 02:25, 3年前 , 14F
會在字串池中尋找有沒有相同的字串,如果沒有會新增一
10/05 02:25, 14F

10/05 02:25, 3年前 , 15F
個新的字串在字串池中,如果有兩者的物件參考變數會是
10/05 02:25, 15F

10/05 02:25, 3年前 , 16F
一樣的,因此使用雙引號寫法下==是行得通的,但是如果
10/05 02:25, 16F

10/05 02:25, 3年前 , 17F
今天使用new方法則字串會存在Heap,物件參考變數是不
10/05 02:25, 17F

10/05 02:25, 3年前 , 18F
同的,要使用equals,因為String的equals被Override了
10/05 02:25, 18F

10/05 02:25, 3年前 , 19F
,因此用equals 就是在比對字串的內容。原文他想表示
10/05 02:25, 19F

10/05 02:25, 3年前 , 20F
應該是自己很緊張,所以這麼簡單的題目都答錯,不過感
10/05 02:25, 20F

10/05 02:25, 3年前 , 21F
覺他後來有補充,所以錄取這樣吧~
10/05 02:25, 21F

10/05 08:10, 3年前 , 22F
追求正確又完整的話,要答完整個 equality 的機制
10/05 08:10, 22F

10/05 09:39, 3年前 , 23F
小弟記得 c++ 在 include string 時可以 沒有的時候不
10/05 09:39, 23F

10/05 09:39, 3年前 , 24F
10/05 09:39, 24F

10/05 09:43, 3年前 , 25F
C++ 要分 c++ std string 還是 c string
10/05 09:43, 25F

10/05 10:43, 3年前 , 26F
std string可以直接比,cstring要用strcmp ...吧
10/05 10:43, 26F

10/05 11:40, 3年前 , 27F
10/05 11:40, 27F

10/05 12:29, 3年前 , 28F
跟物件也沒有關係。是 == operator的運作觀念。
10/05 12:29, 28F

10/05 17:05, 3年前 , 29F
同樓上
10/05 17:05, 29F

10/06 04:48, 3年前 , 30F
C#是因為有operator override,其他跟java是一樣的
10/06 04:48, 30F

10/06 04:49, 3年前 , 31F
overload
10/06 04:49, 31F

10/06 04:51, 3年前 , 32F
然後不要隨便用「實作中」怎樣來寫程式,除非你現在是需要
10/06 04:51, 32F

10/06 04:51, 3年前 , 33F
micro-optimization,不然照著規格而不是實作寫才不會埋雷
10/06 04:51, 33F

10/06 04:54, 3年前 , 34F
字串池只限literal,但如果能這麼確定變數來源是literal那
10/06 04:54, 34F

10/06 04:56, 3年前 , 35F
也許根本該用enum,否則字串來源這麼多,StringBuilder、
10/06 04:56, 35F

10/06 04:57, 3年前 , 36F
各種編解碼,不是只有看到new才有new
10/06 04:57, 36F

10/06 23:34, 3年前 , 37F
10/06 23:34, 37F

10/07 15:22, 3年前 , 38F
Bad practice的問題 沒有對錯 只有好跟不好
10/07 15:22, 38F
文章代碼(AID): #1VUUIFY8 (Soft_Job)
文章代碼(AID): #1VUUIFY8 (Soft_Job)