JAVA OCP 1Z0819 認證 模擬試題解析 Lesson17-3 技術觀念題型總講解

皇阿瑪數位學院
6 位粉絲
#皇阿瑪數位學院 #1Z0819認證 #ocp #819 #javacertification #java
這個 JAVA 認證課程 可以讓您輕鬆取得最新的 Oracle Java OCP 1Z0819 證照 除了取得證照外,也會深入解析相關知識,讓您入寶山不會空手而回,再次地感謝您加入本頻道.
2025 JAVA OCP 新技術觀念題綜合測驗 考題持續更新中
https://javaocp.amashop.tw/java.php
模擬試題下載,帳號密碼在第一堂課片尾,點一下影片左上角皇阿瑪logo即可
https://javaocp.amashop.tw
線上模擬測驗,帳號密碼在第一堂課片尾,點一下影片左上角皇阿瑪logo即可
https://javaocp.amashop.tw
加入會員
https://www.youtube.com/channel/UCKVckRctesThvRbAh4QtbHA/join
會員專屬影片
https://www.youtube.com/playlist?list=UUMOKVckRctesThvRbAh4QtbHA
好 再來我們看下一題
那下一題這個是在考執行系同步的問題啦
重點就是在考這一個
Cyclic Berry
我們一個循環路障
循環屏障
那Cyclic Berry
你就把它想成我有執行系1執行系2
執行系3執行系4
好有四個執行系
然後他這裡就設了一個
Cyclic Berry
循環路障卡在這裡啊
啊卡在這裡做什麼用
當你這個執行系跑的比較快
跑來這裡之後
抱歉你碰到的路障我不讓你過
哎為什麼
因為我這個路障我會寫啊
我要等四個執行系還是等五個執行系
哎啊我我會寫
那我目前假如說我要等四個執行繫好
啊你先到抱歉你要在這邊等啊
那第二個再過來第三個再過來
第四個再過來
啊四個都到齊了之後
哎才這個路障纔打打開打開啊
才讓你們過
啊今天假如說只到三個
我跟他講說我要有四個
可是遲遲都只有三個來而已
沒有第四個抱歉你們就一直等等等啊
等到第四個執行繫到了
我才會放棄
才會讓你們過 ok
所以這一題最主要就是在考這一個了
cyclic barrier 這個循環路障啊
那程式老師直接講解
這邊我們執行系詞裡面
是不是有五個產生有五個執行系
可是我的路障設兩個
啊路障設兩個路障
啊我路障設兩個
可是我的執行繫有五個
那那這時候根本沒有辦法匹配嗎
然後他的資料流也是五個
啊他資料流五個這邊
然後去啟動執行系用 eq 的嗎啊
去啟動執行系
所以這個程式
他會執行啊他會執行問題他會執行
一直等不到該來的人
這個怎麼執行呢啊
因為資料流同學都知道就一個一個嗎
這個是01234
總共也是五個好他第一個0
1好碰到我的循環路障
好有可能0先過來啊
然後1再過來好
已經湊滿兩個了
因為我的路障跟他講說兩個
我就放行啊放行下面再來啊
這個2跟3
哎也湊滿兩個
哎我就繼續再放行
然後緊接著是
啊是遲遲等不到另外一個啊
因為我的路障我說執行需要兩個嗎
啊所以他一直遲遲等不到
另外一個就一直在那邊喫喫的等啊
喫喫的等啊
所以程式怎樣
it never finish
完全沒有辦法結束啊
因為一直等不到另外一個人啊
另外一個執行系
除非老師這邊把他設5
哎這樣就可以或者我這裡設2
然後這裡我的那個
資料流的數目啊0
也設2了就是
0-2啊0-2他就是01嗎
兩個哎這樣才會完成啊
你不要說哎老師這裡有shutdown啊
哎有把整個執行序詞關閉
那問題你shutdown
你這個路障就等不到一個人啊
因為他現在沒有辦法
兩個啊我是五個
然後我的這個也是五個
根本沒有辦法湊對嗎
哦沒有辦法湊對你你三個也不行了啊
這邊你只要說我的循環路障
我要等三個也不行啊
一定就是要剛好匹配啊
ok 所以答案就是
it never finish
來我們程式佐證一下啊
好我們這邊先來看一下程式啊
我去new了一個
cyclic barrier
然後我的路障
要等的數目有五個了啊
那有五個我現在我把這個
迴圈設為0-10
啊小於10
所以代表說我這裡會產生10個執行序
啊會產生執行序
然後調用這個
cyclic barrier
.await的方法
讓他去等就對了
所以到時候第一個執行序01234
哦湊滿五個了
哎他就放行
那放行我這邊他就會顯示到齊了
let's go
好然後緊接著再繼續再等
56789
到齊了哎剛才又哎
繼續放行啊
啊這個程式老師這邊有設slip啊
有讓他隔一秒
所以我們先來看一下他的經過啊
有沒有他現在隨著0哎我等你哦
but await
好那五個到了有沒有他就走了
然後再來56789哎五個又到了
啊總共有十個執行序
都執行完了程式
結束了對不對好
那我現在假如說
讓他
六個好
那六個的話
第一次01234哎
012345好湊滿六個
他就到齊了
let's go
那再來
緊接著是不是就只有四個而已
再來是那個6789
就只有四個啊湊滿不了六個
然後他就在那邊等遙遙無期啊
程式就不會結束了
我們看一下
隨著0隨著1234好湊滿六個了
let's go
然後6789
哎啊另外兩個怎麼都還不到啊
我一直在等你啊
十跟十一你怎麼還不來啊
當然不不來了啊
因為我現在執行序 total 才十個啊
啊 total 十個你第一次等六個啊再來
你不管怎麼等都只有等到四個啊
啊程式就卡住了有沒有
他就不會結束了
他就不會結束了啊
ok 那我們再來看一下來
這時候要手動的自己結束啊
來我把這一些
註解一下那我們看一下考題
好這是我們的考題嗎
那考題他現在產生的執行序詞
有五個執行序了
那有五個執行序
你可以看到他現在產生的循環路障
就只有兩個
然後我們的資料流也只有五個
所以五除以二不會整除嗎
他其中有一定會一直在那邊等啊
一定會一直在那邊等
等另外一個啊要乘雙乘對纔可以啊
所以他一直在那邊等等等
哎湊不齊
他就不會結束了來我們去執行
有沒有發現你不要說
哎自己在執行的時候哎
他其中有一個了啊
考題有一個項目就寫說
這個 it finished without any exception
對啊他當然不會拋出任何例外啊
那問題是他有沒有結束沒有啊
你們不要看他他已經有印出來了
就認為他結束了
沒有結束了啊
對這個我要自己手動的啊
那如果結束的話
結束他就不會再亮燈
好那我們現在讓他湊滿好了啊
如果是五個哎
我的循環路障我也設五個這樣就可以了
有沒有他是0123
02134然後這個地方已經結束了啊
你如果要兩個
我就把執行序詞
兩個執行序
然後我的資料流也是一樣啊
就兩次0跟1了啊
0跟1這樣也 ok 這樣也 ok
對不對
他也結束
你絕對不能說沒有辦法證出就對了
你沒有辦法證出的話
他當然就會一直在那邊等待等待
好所以這一題事實上沒有什麼困難度啊
各位只要瞭解一下這一個
什麼叫
這個
cyclic barrier
他的映作
這一題事實上看一下
答案很快就出來啊
答案是這個 a
id name finish
ok 我們看下一題
那這一題
你不用去管那個程式了啊
我們先看一下他說
given a member class with field
for name and year membership
就是
給他兩個欄位了啊
一個欄位是我們的這個
membership
membership 叫
會員會員年資
他這個是 test membership
length
好啊我們再看上面啊
given a member class
with fields for name and year
membership
ok 就是我們要自己
可是他他並沒有啊
哎他好像沒有這樣的一個列別
他說我們要自己串建一個 member 的列別
然後 member 的列別有兩個欄位
一個欄位是姓名一個是會員年資啊
然後包含了 including
getters and setters
and print 還有一個列印的方法
就是要包含getter 設值啊
setter 設值跟取值的方法
然後 and the list of club members
members
還有一個這個
club members
的那個列表的集合就對了
啊程式寫這樣了啊他跟我們講說
which two string method
can be changed to use method reference
好就是上面這一些程式
這個是一個資料流啊你可以看到
這個是用匿名內部列別嗎
啊這個是用 lambda 表達式
這也 lambda 表達式
啊然後跟你講說這些程式
有哪兩個可以直接把它改成方法參照
那同學考這一題的時候
你不用去看那個程式了
這一題事實上就是在考 method reference
就是在考方法參照的語法
你會不會
方法參照
那麼方法參照
就這幾種啊
我很快的寫一下
方法參照
的寫法就是用冒號冒號這一個
運算符號冒號冒號運算符號
啊冒號冒號的左邊
哎要嘛是列別要嘛是物件
啊右邊就是我們的方法名稱
啊或者是建構值的 new
啊所以方法參照的寫法歸納了啊
就是這樣
我寫一下啊第一個
列別名稱
冒號冒號啊這個方法名稱
那方法名稱
有可能是列別方法
有可能是物件方法啊
就做名稱而已不會有小括號啊
啊第二種是我們的物件名稱
冒號冒號
啊後面一樣是方法名稱
啊這方法名稱有可能是
物件方法或者是列別方法
啊第三種寫法
我們的那個列別名稱
冒號冒號 new
所以方法參照就只有這三種語法而已
啊你看不到什麼小括號
也看不到那個 lambda 表達式
因為我們方法參照最主要就是要把
整個 lambda 表達式
在精簡成目前
所看到這樣的一個方法參照的語法
啊所以方法參照各有利弊了啊
請像你那個 lambda 表達式
你裡面的參數你可以去改變他的詞啊
哎或者就是在寫一些判斷了
啊方法參照就不行了啊
方法參照都是用預設的
除非你自己寫另外一個方法
哎然後這邊再用方法參照
去寫你自己所制定的方法名稱
ok 啊那個除非是一直要用啊
如果沒有要一直要用的話
你幹嘛先寫一個方法名稱
然後再用方法參照
這樣就感覺有一點多此一舉的啊
就直接寫呼叫那個方法就好啊
除非就是說你這個方法
哎有可能以後常常都會再用
啊常常都要用你到時候呼呼叫
還要再寫匿名內部列別
還要再寫 lambda 表達式太麻煩了
哎就直接改寫用方法參照
好所以二試題
事實上我們可以不用管管這個程式啊
你程式根本都不用看啊
整個都畫掉也無所謂
就直接去看
答案啊
所以這個答案這個很明顯
a 就不是正確的方法參照的寫法
啊 b
他這個地方是我們的
那個物件名稱啊
我看一下這個叫 test name
啊 test name 是我們的物件名稱啊
哎他就說我們自串物件
然後去調用 compare to ignore case
就去
哎
比較有沒有相同啊不區分大小寫啊
然後像這個就是一個 lambda 表達式
lambda 表達式不可能跟我的方法參照
湊在一起啊
我的方法參照最主要就是要把
lambda 表達式整個
取代過去啊
所以這個也是錯誤的語法
啊 d 就是正確了啊
d 這是我們的那個列別名稱
然後
看是物件方法或列別方法都可以了
因為在方法參照
列別以前我們沒有玩方法參照
列別只能調用列別方法
沒有辦法直接調用物件方法
可是在方法參照他可以啊
列別可以直接調用物件方法
所以這一題
不要看到哇
程式好像很複雜
因為我們現在最主要看他的要求什麼
fit to string message can be
change to use
最主要就是考方法參照的語法
你會不會寫而已啊
所以考到這一題不要做眉頭
考到這一題要大笑
因為答案
不用10秒鐘就可以知道答案了
ok 好那這邊我在講解啊
總是要實際上來去玩一下啊
實際上來玩一下
來我們看一下程式
好這邊應考題要求
老師就新增一個 member 的
這最主要是要解題啊
你們考試不用那麼無聊
自己再新增 member 啊
然後他說 member 有一個 name 的欄位
有一個這個會員年資
year membership
然後給他取值的方法啊
然後給他那個設值的方法
這個是設值啊這是取值啊
啊這是取值啊還有一個設值呢
好還有一個設值
那這是建構值啊
那建構值一樣我們在 new member 的時候
就可以放姓名跟年資啊
ok 那再來他說要產生
一個集合
他集合名稱叫 club members 對不對
ok 啊那再來
test name 哎我把它設為 Michael
然後宣告這個 test membership
就測試
事實上就是年年資的長度了啊
年資的長度
那你可以看到這個就是原本的程式
這個是原本的程式來我先去
執行一下
好這時候他印那個 ocp pass
ocp pass
啊為什麼會印 ocp pass
因為我 print 這邊我就直接去印
ocp pass 了啊
好那程式那個老師就不再講解
最主要我們來改一下啊
看是不是就把這個
原本是 lambda 表達式的
我們把它改成方法參照 ok
那還有剛才還有一個地方啊
那我再看一下
剛才還有一個就是我們把它改成
member print
在哪裡
他有一個要去呼叫這個
pick ok 啊就是
pick 這邊
他是不是就調用了這個 print 的方法
所以我們 pick 到時候就直接改成
member 冒號冒號 print 就
因為程式都已經寫好了啊
那我們來直接這個就改成
test name 物件冒號冒號
然後我們的物件方法
compare to ignore case
啊看一下印出來的結果是不是跟
原先的程式印出來一模一樣
這是佐證而已啊
啊剛才我講過了這一題根本就是送分題
考你 lambda 語法會不會而已
compare
ignore case
map test name
然後冒號冒號
compare
ignore case 哎他給我寫寫錯誤
啊為什麼錯誤我們先看一下他寫什麼
他說
the method
in the type
他剛才
the method map function
in the type string
哦 ok
最主要我們那個方法名稱了啊
物件方法名稱寫錯了
compare to
ignore case 啊
那還有要把這整個
匿名內部列別了啊
要把這整個匿名內部列別
哎我們就直接再把它改成
像這樣的一個方法參照
member 冒號冒號 print 啊
我們的列別名稱
叫
member 然後去參照到
這個物件方法
嘿他是物件方法
他不是列別方法
所以有沒有發現方法參照很厲害啊
傳統的我們列別要直接呼叫列別方法
impossible 可是你用方法參照
你卻可以直接呼叫啊
來我們member
冒號冒號
print 哎就這樣
所以原本這個是 lambda 表達式
然後這是匿名內部列別
我們直接都改成方法參照的寫法
來我再去執行
哎印出來是不是都完全一模一樣
ok
