2022年10月23日 星期日

面試紀錄

雲海岸
---------
問get post的差異-其中有說明post在資安上是比較安全
使用 GET 的時候我們直接將要傳送的資料以 Query String(一種Key / Vaule的編碼方式)加在我們要寄送的地址( URL )後面,然後交給郵差傳送。使用 POST 的時候則是將寄送地址( URL )寫在信封上,另外將要傳送的資料寫在另一張信紙後,將信紙放到信封裡面,交給郵差傳送。
 POST 是將表單的內容放在 body 裡面,在不看封包的情況下似乎較為安全,此外在傳送檔案時會用到 multi-part 編碼,將檔案與其他表單一併放在 body 中傳送
https://medium.com/kurt/%E7%B6%B2%E9%A0%81get-%E8%88%87-post-%E5%B7%AE%E7%95%B0-%E7%A7%91%E6%99%AE%E5%A3%B9%E9%BB%9E%E9%80%9A-94cbaa666fdb

問spring IOC
主程式中所需要的輔助物件,並不是在自己的類別中建立,而是由外部控制的。建立好後,將其傳遞給主程式,這個動作稱為依賴注入(dependency injection,DI),是控制反轉的實現方式。
在Spring啟動時,這兩個類別會被建立成元件,存放在容器中。其中計算器使用了 @Autowired標記,因此框架會從容器中找出對應類別的元件,自動注入到計算器中。
一般來說,元件預設是「單例」的。意即在整個應用程式運行期間只會存在唯一一個。如此可避免產生不必要的重複物件。
Spring Boot透過容器,達到元件的控制反轉。而開發者透過用類別、介面甚至元件名稱來宣告輔助元件,讓容器得以完成依賴注入。在撰寫元件的程式碼時,我們可透過介面提供的方法來使用其他元件,以便在替換時,仍能保持一致的使用方式。而進行單元測試時,能夠自行傳遞不同屬性或實作類別的物件,提高了可測試性。
https://medium.com/chikuwa-tech-study/spring-boot%E8%88%87%E6%8E%A7%E5%88%B6%E5%8F%8D%E8%BD%89%E7%9A%84%E9%97%9C%E4%BF%82-ac1bd4b82ed5

在你專案中有用到什麼設計模式?
使用itext和POI的時候, 用Template樣板模式, 使其中重複用到的功能寫於抽象父類別, 而不同的generate report功能由各報表類別來實作, 合適的滿足開閉原則的要求

--------------
博彥
有考IOC AOP

AOP
AOP 的本質 — 改變程式碼的流程
以 Web Server 開發場景為例,我們經常會需要在很多 end-point API 的方法執行前先執行權限驗證,或者是在這些 end-point 執行 transaction 失敗時可以 rollback。

這些在程式碼中會重複出現,它們是重要但是不屬於我們核心業務的操作,如果要重複複製貼上到專案中的各處會造成難以維護的窘境。因此 AOP 試圖讓這些常被複用的邏輯獨立出來,用特殊的機制包裝起來,讓我們的業務邏輯不需要去看到任何相關的程式碼。

這件事本質上聽起來跟呼叫函式沒有太大的區別,然而 AOP 本質上是屬於一種 Meta Programming 。具體來說,實現 AOP 的工具處理的是程式碼本身(或 bytecode本身) 或是 class (或 object ) 的資訊,是用來改變程式碼的流程或織入( weaving ) 新的程式碼,而非只是單純地「執行一段程式」。

AOP 只是種指導編程模式的原則而已,在不同的語言和生態系中,類似的概念都有不同的實作方式,然而共通點都是藉由改變程式碼的流程讓核心邏輯不會受到額外的切面邏輯的影響。

在靜態語言中,程式的流程在編譯時期就會被寫死了,要穿插切面在程式碼各處會需要有額外的工具來支持。而在動態語言中,因為程式的流程並不是在編譯時期就被決定了,而是可以動態更改的,所以通常原生語法就支持了 AOP 功能。
https://tech-blog.cymetrics.io/posts/maxchiu/aop/



問: 有無使用TDD?

TDD(Test-Driven Development)是一種開發流程,中文是「測試驅動開發」。用一句白話形容,就是「先寫測試再開發」。先寫測試除了能確保測試程式的撰寫,還有一個好處:有助於在開發初期釐清程式介面如何設計。

程式介面,或是常說的 API 介面,是內部封裝細節和外部元件的溝通橋樑。在實作時,我們通常會希望程式介面維持穩定,越少改動越好。但在開發初期憑空定義出來的介面,常常在開發完成實際使用時才發現不好用,導致介面需要頻繁改動。

測試程式的作用是「模擬外部如何使用目標程式,驗證目標程式的行為是否符合預期」。換句話說,在寫測試時,會去了解目標程式如何被使用,比起憑空定義介面,更有助於在實作目標程式之前釐清適合的介面設計,減少後續變動的次數。

具體來說,TDD 流程可以分成五個步驟:

步驟一:選定一個功能,新增測試案例

  • 重點在於思考希望怎麼去使用目標程式,定義出更容易呼叫的 API 介面。
  • 這個步驟會寫好測試案例的程式,同時決定產品程式的 API 介面。
  • 但尚未實作 API 實際內容。

步驟二:執行測試,得到 Failed(紅燈)

  • 由於還沒撰寫 API 實際內容,執行測試的結果自然是 failed。
  • 確保測試程式可執行,沒有語法錯誤等等。

步驟三:實作「夠用」的產品程式

  • 這個階段力求快速實作出功能邏輯,用「最低限度」通過測試案例即可。
  • 不求將程式碼優化一步到位。

步驟四:再次執行測試,得到 Passed(綠燈)

  • 確保產品程式的功能邏輯已經正確地得到實作。
  • 到此步驟,將完成一個可運作且正確的程式版本,包含產品程式和測試程式。

步驟五:重構程式

  • 優化程式碼,包含產品程式和測試程式(測試程式也是專案需維護的一部份)。
  • 提升程式的可讀性、可維護性、擴充性。
  • 同時確保每次修改後,執行測試皆能通過。

每個功能重複上述步驟,就是 TDD 的開發流程。

https://tw.alphacamp.co/blog/tdd-test-driven-development-example


問 Java 8 特性

https://www.796t.com/p/570214.html

https://blog.51cto.com/u_15236724/5368640


---------
匯誠
Array和List差異
Array需要先宣告陣列的大小,且是固定的無法再做更動,元素可透過"陣列名[索引index]=元素內容;"來進行新增的動作,再之後陣列名[索引index]就保有資料了,而常見的array型態也包括String型態。
ArrayList的大小可以變化,透過add來將元素新增至列表的末端,目前已有三筆資料(a、b、ccc),接著就看到其他常用的方法。
List是有序集合,是ArrayList的一個介面,但是只能夠使用List包含的方法,且不能實例化(Object),其他大部分都與ArrayList相像。

2022年9月12日 星期一

Big O

Overview

Big O help us find out how well the problem is solved.

We use it to distinguish that code from good code, good code from great code.

->great developer

What is good code?

1. Readable

2. Scalable

Big O allow us to measure the idea of scalable code.

How can we make sure that there is a way for us to measure in terms of efficiency, what is good code, 

what is bad code, and what is code that can scale that as the number of arrays or inputs increases, 

it doesn't constantly slow down more and more.

We can compare it to different algorithms or in this case, function using big O and say which one is better than the other when it comes to scale. Regardless of our computer differences.

When we talk about Big O and scalability of code, we simply mean when we grow bigger and bigger with inputs, how much does the algorithm or functions slow down.

When the Elements increase, the number of operations increased over and over. Some increase much, some doesn't increase much.

Instead of using performance and using time to measure the efficiency of our function, we can just calculate how many operations a computer has to perform because each operation takes time on a computer.

O(n)









The picture describes that 4 item in an array.

We do the asking loop "is it the nemo ?" 4 times 4 operations


As the items increased, the operation increased.

This is linear. We can say this findNemo notation O(n).


As the item increased, we find the time scaled.

O(1)


This is O(1), what we called constant time.

It is how many items in boxes, we just grasping the first item in the array.


The number of operations just stay flat.

function funChallenge(input) {
  let a = 10; //O(1)
  a = 50 + 3; //O(1)

  for (let i = 0; i < input.length; i++) {
    anotherFunction(); //O(n)
    let stranger = true; //O(n)
    a++; //O(n)
  }
  return a; //O(1)
}

We can calculate the function which is BIG O(3+3n).
It can be simplify as O(n).

function anotherFunChallenge(input) {
  let a = 5;//O(1)
  let b = 10;//O(1)
  let c = 50;//O(1)
  for (let i = 0; i < input; i++) {
    let x = i + 1; //O(n)
    let y = i + 2; //O(n)
    let z = i + 3; //O(n)

  }
  for (let j = 0; j < input; j++) {
    let p = j * 2; //O(n)
    let q = j * 2; //O(n)
  }
  let whoAmI = "I don't know";//O(1)
}
BIG O(4+5n).-> O(n)
How to simplify? 4 rules

Rule 1: Worst Case

If the worst case happen, we just need to run all the case of it.
However, we can add break when the function find the target.
The effort time will decrease.
We can know that in the following situation.
It may be O(1), O(4) for us to find the nemo.
The worst situation is O(n).
















Rule 2: Remove Constants

O(n+1), O(n+10000) -> O(n)
Because we consider the scale, we omit the constants.
On the other example,
We don't really care about how steep the line is.
O(2n), O(n/1000) -> O(n)
We care about how the line moves as our inputs increase.

Rule 3: Different terms for inputs

When the function has two different arrays of inputs,
we say O of A plus B.











When the loops were actually nested and they are not one after another,
the big O is A times B.










Rule 4: Drop Non Dominants












if we call the function > printAllNumbersThenAllPairSums([1,2,3,4,5]),
the Big O will be O(n+n^2).
The n will be drop due to the insignificance in the function.
Hence, it the Big O should be O(n^2). It is quadratic.

2022年8月4日 星期四

swarm intelligence 群體智慧- 托福 聽力46-2 部分內容

Swarm intelligence is a collective behavior that emerges from a group of animals, like a colony of termites, a school of fish, or a flock of birds.

群體智能是一群動物的集體行為,如白蟻群、魚群或鳥群。

Let's first consider the principles behind swarm intelligence, and we'll use the ant as our model.

Now, an ant on its own is not that smart. When you have a group of ants, however, there you have efficiency in action.

You see, there's no leader running an ant colony.

讓我們首先考慮群體智能背後的原理,我們將使用螞蟻作為我們的模型。

現在,一隻螞蟻本身並不那麼聰明。 然而,當你有一群螞蟻時,你就有了行動的效率。你看,沒有領導者管理蟻群。

Each individual, each individual ant operates by instinctively following a simple set of rules when foraging for food.

Rule number 1: Deposit a chemical marker... called a pheromone. And rule 2: Follow the strongest pheromone path.

The strongest pheromone path is advantageous to ants seeking food.

So, for example, when ants leave the nest, they deposit a pheromone trail along the route they take.

If they find food, they return to the nest on the same path and the pheromone trail gets stronger—it's doubled in strength.

Because an ant that took a shorter path returns first, its pheromone trail is stronger, and other ants will follow it, according to rule 2.

And as more ants travel that path, the pheromone trail gets even stronger.

每個個體,每個個體的螞蟻在覓食時都本能地遵循一套簡單的規則。規則 1:存放一種化學標記物……稱為信息素。 規則 2:遵循最強的信息素路徑。最強的信息素路徑有利於螞蟻尋找食物。因此,例如,當螞蟻離開巢穴時,它們會沿著它們所走的路線放置一條信息素軌跡。如果它們找到食物,它們會沿著同一條路徑返回巢穴,並且信息素痕跡會變得更強——它的強度會增加一倍。因為根據規則 2,走較短路徑的螞蟻首先返回,它的信息素軌跡更強,其他螞蟻會跟隨它。隨著越來越多的螞蟻在這條路上旅行,信息素的踪跡變得更加強大。

So, what's happening here?

Each ant follows two very basic rules, and each ant acts on information it finds in its immediate local environment.

And it's important to note: Even though none of the individual ants is aware of the bigger plan, they collectively choose the shortest path between the nest and a food source because it's the most reinforced path.

By the way, a-a few of you have asked me about the relevance of what we're studying to everyday life.

And swarm intelligence offers several good examples of how concepts in biology can be applied to other fields.

Well, businesses have been able to use this approach of following simple rules when designing complex systems, for instance, in telephone networks.

When a call is placed from one city to another, it has to connect through a number of nodes along the way.

那麼,這裡發生了什麼?

每隻螞蟻都遵循兩條非常基本的規則,每隻螞蟻都根據在其直接本地環境中找到的信息採取行動。重要的是要注意:即使沒有一隻螞蟻知道更大的計劃,它們也會集體選擇巢穴和食物來源之間的最短路徑,因為它是最堅固的路徑。順便說一句,你們中的一些人問過我我們正在學習的內容與日常生活的相關性。群體智能提供了幾個很好的例子,說明生物學中的概念如何應用於其他領域。好吧,在設計複雜系統時,例如在電話網絡中,企業已經能夠使用這種遵循簡單規則的方法。當從一個城市向另一個城市撥打電話時,它必須通過沿途的多個節點進行連接。

At each point, a decision has to be made: Which direction does the call go from here?

Well, a computer program was developed to answer this question based on rules that are similar to the ones that ants use to find food.

Remember, individual ants deposit pheromones, and they follow the path that is most reinforced.

Now, in the phone network, a computer monitors the connection speed of each path, and identifies the paths that are currently the fastest—the least crowded parts of the network.

And this information, converted into a numeric code, is deposited at the network nodes.

This reinforces the paths that are least crowded at the moment.

The rule the telephone network follows is to always select the path that is most reinforced.

So, similar to the ant's behavior, at each intermediate node, the call follows the path that is most reinforced.

This leads to an outcome which is beneficial to the network as a whole, and calls get through faster.

在每一點上,都必須做出決定:呼叫從這裡往哪個方向進行?

嗯,開發了一個計算機程序來回答這個問題,其規則類似於螞蟻用來尋找食物的規則。請記住,個體螞蟻會沉積信息素,它們會遵循最強化的路徑。現在,在電話網絡中,計算機監控每條路徑的連接速度,並識別當前最快的路徑——網絡中最不擁擠的部分。這些信息,轉換成數字代碼,存放在網絡節點上。這加強了目前最不擁擠的路徑。電話網絡遵循的規則是始終選擇最強化的路徑。因此,類似於螞蟻的行為,在每個中間節點,調用遵循最強化的路徑。這導致對整個網絡有利的結果,並且呼叫更快地通過。

2022年4月10日 星期日

[超速學習讀書筆記] 第五章 法則2: 專心致志-把刀磨利

 開頭作者用一個科學家的故事"瑪莉, 薩莫維爾", 來說明學習可透過短時間專心而達到成效, 那個時代女人要學習是相對於男人難的多, 因為普遍社會對女性只期待家務, 而並不重視女性教育, 而她除了精通數學, 會流利的說幾門外語,也懂畫畫跟鋼琴,是她將拉普拉絲的天體力學翻譯並加以延伸, 自幼她培養專注力, 來自於當大人不准她睡覺的時候, 她在腦子中反覆讀歐幾里得的數學著作, 她在照顧孩子期間每早研讀一小時的植物學, 而她翻譯及延伸天體力學同時, 都是的完成照顧小孩還有家務相關忙碌的事, 甚至有時朋友會從遠方來看她, 她就建立一種學習習慣, 就是間斷一段時間回來能夠快速的找到她學習的主題,而人們之所以會遇到學習的困難, 作者列出以下三種原因

1無法開始

2無法維持

3無法做到真正的專注

問題一: 無法開始專注(拖延)

簡單的說~就是你沒做應該做的事, 反而做別的事或是偷懶, 作者指出一些拖延原因, 可能來自於我們對於做那件事本身有厭惡, 也有可能更喜歡做其他(分心)的事, 因此, 要克服他第一步, 就是承認自己在拖延, 這方面是因為, 有很多拖延的時候, 你覺得你在"休必要的假", 或"玩樂是必要的休閒",但事實就是~你不願意去做, 你需要承認你正在拖延

接下來, 你可以去做的是, 覺察你現在做的狀態, 然後同時給自己一個支撐的力量, 因為當你知道你開始進行正事後, 就會像輪子轉動, 只需要一點點力氣就能維持旋轉, 但是你需要一個開始的力量, 找到那個只要一點點力量就可以讓你開始working的說服自己開始從事該事情, 會是一個好解法

而在中間, 你可能遇到, 每次開始都堅持個三五分鐘, 然後就開始偷懶, 這有一部分是, 你並沒有給自己設定一個休息區間, 比方說, 我只要寫完這一個大題, 我就可以去休息, 我只要背完上面幾個單字, 我就休閒一下,這些都是讓自己專心堅持更久時間的小方法, 最後, 透過合適的時間表安排, 找出空嫌時間來利用, 可以使你對學習項目的專注度, 有正確的規劃, 雖然無法避免想偷懶的感覺, 但是掌握練習, 可以使你能面對這些影響力

問題二: 無法持續專注(分心)

作者提出, 持續在一個事情上學習, 可以注意一個概念"心流", 就是一種專注的理想範本, 不會被惱人念頭打擾, 然後完全讓自己進入到手邊工作的狀態, 雖然超速學習和刻意練習, 可能是進行一種很有挑戰的做法, 就是挑戰學困難事情, 但是其中, 其實當你在穩定進行的時候, 你已經不知不覺的啟動心流狀態, 並且, 其實當你強化學習, 熬過一段時間, 只要有維持高強度學習, 就不會有落空, 難熬是因為不確定有沒有成果, 但是當你知道這些做的不論是什麼, 都是學習上的投資, 會有回收的效益, 你的心情就會輕鬆許多

另外一方面, 其實本身要長時間專注一個主題, 是不容易的事情, 但是如果同時有幾個可以交替學習的項目, 這樣交叉輪流練習無疑會提升學習效果(我可以試試英文和程式交叉學習), 而這部分到底怎麼分配, 還是來自於個人習慣, 你要觀察自己如何能達到效率最大化, 假設你已經某種程度找到自己的最適點, 可以注意一下以下提出三個分心來源

分心來源1:你的環境

是吵雜會令你分心, 是否有手機或是可以看電視玩遊戲? 是有背景音比較讓你好做事, 還是完全安靜空間? 在你開始學習的時候, 把些分心的來源避開是需要的, 另外, 了解自己最佳學習環境先準備好, 可以幫助專注

分心來源2:你的學習任務

比方說"閱讀"其實比看影片還難專注, 當你進行這個項目, 你可以修改一下做的事情, 讓自己專注提升, 比方說學習寫下自己重新解釋困難概念的筆記, 防止假讀書(只做讀書動作, 而心已經飄到其他事情上), 而如果是要解決問題, 製造出某個東西, 其實相對來說是比較不容易分心的項目

分心來源3:你的心

負面情緒, 焦躁不安, 做白日夢, 都可能是專注的最大障礙, 這些非常有可能干擾你的學習, 有可能是負面思考, 覺得自己正在一條錯誤的人生道路上, 或是就是拿情緒沒責, 也有可能對未來的擔憂感, 這種時候, 最好的方式就是意識到它的存在, 感受自己的感覺, 然後慢慢將焦點轉移到自己的工作上, 負面焦慮憂慮, 就會比較容易過去, 雖然說還比較容易, 但是當你有負面感覺的時候, 適時的給自己一點空間recover, 然後在把焦點放到該專注的事情上, 會比一直強迫自己還好, 不要用壓抑來面對自己負面的情緒, 經過時間的練習, 的確可以幫助自己回到專注的事情上

問題三: 無法做到真正的專注

這部分作者提出了興奮感來補充, 想睡覺時興奮感是低的, 運動時興奮感是高的, 當興奮感過高, 專注力會開始受損, 而最好的事, 有一點興奮感的進行學習, 另外可能面對大量單純的工作時, 反而使用一些噪音來增加興奮感會表現更佳, 但是這一部分就是因人而異, 有可能吵雜的咖啡廳提升了你的學習效果, 也有可能在圖書館這樣安全的空間能使你專注收穫最大化, 這部分可以自我測試看看

結尾

小處著手, 大大提升你的專注力

專注力並不是少數人的例子, 你可以透過一系列的流程來提升自己的專注力, 作者建議: 承認你所處的狀態, 然後從小處著手

有的人一分鐘坐不住, 嘗試讓它變成兩分鐘, 嘗試解決自己分心的問題, 然後逐漸拉長能專注時間, 讓自己的學習品質提升, 本章討論了如何開始學習困難事物, 下面進一步討論學習的正確方法: 直截了當, 能解釋你學習應該先開始作哪一類的事, 以及更重要的, 若你希望盡快運用所學, 哪些是你應該避免

2022年4月5日 星期二

後設學習 ex 托福

a 為什麼?

兩方面都是

功能性

1 為找工作: 因為有些國外公司應聘的時候會看, 也是可以作為語文能力的一個補充證明

簡單有力說出自己是可以進行全英文工作

2 為技術提升: 因為外語資源多, 如果掌握短時間精進英文能力, 對於短時間學習外語資源會有所幫助, 特別是考托福中, 作即時課堂筆記也會是考試內容之一, 筆記越完全相對來說答題較容易高分, 可以整體提升外語學技術的能力

3 為了教英文: 這部分純粹是教英文可以多一個證明, 說明我自己有足夠實力去家教英文

4 為了留學: 這部分雖然沒打算, 但是說不定未來還是有進修空間, 或是再讀一個國外研究所會有幫助

本質性: 

1說外語感覺優美, 喜歡聲調好聽

2外語好感覺就很聰明, 頭腦也動比較快


b 做什麼?

1 了解四個項目出題運作, 整體結構, 比方說出題文章結構, 寫作時範文架構

目前透過Utube, 可能會買書補強自己較弱部分(4/5本周需要先裸考一次, 先考再買書)

2 需要背單字, 有下載黑書 高頻, 可以用單字黃書, 從菁英網上閱讀資源中找單字來背

3 

a 練習發音, 從每次朗讀課件來練習, 並錄音起來, 每次進行下面一段落, 先回放記憶, 再進行

b 練習寫作, 本周先進入寫作課程, 然後在下一周開始每周都寫作文 4/12, 4/19, 4/26, 5/3, 5/10, 5/24

c 剩下的模考會有5次 5/11, 5/18, 5/25, 6/1, 6/8 差不多在一個月後, 可以檢視一下提升多少

d 線上課程之外買書進行的部分


c 如何做?

使用udemy課程每日2小時, 使用菁英線上資源, 每日1小時, 小黃書1小時, 早上和下午各30分鐘複習+背

參考utube介紹準備方式

https://www.youtube.com/channel/UCa5oulemRwjN3zEVHWPJuUg




2022年4月3日 星期日

[超速學習讀書筆記] 第四章 法則1: 後設學習-先畫一張學習地圖

 如果說我看得比別人遠, 那是因為我站在巨人肩上

一開始作者舉了一個 丹 學語言的例子, 只花了30分鐘, 由一個母語者說單一字詞, 學習者評判斷, 模仿和記憶, 完全能開口說新語言, 他如何快速學會單字文法, 及發音? 來自於第一法則, 後設學習

後設學習, 簡單的說, 就是學習關於學習這件事,接下來作者舉了中文例子, 藉由知道部首如何組成, 而去學習該字詞意思, 是一種學習如何學習, 而他的學習法是來自多年的學語文經驗, 透過一系列物品和動作認識, 而自行理出該語文樣貌

後設學習地圖的力量

後設學習是一種幫助你學習新事物時, 可以更快, 更有效, 看出該科目如何運作, 以及需要精通什麼技能使之更有效地辦到, 這是超速學習計畫的成功關鍵, 以求達到知曉目的地而不會迷路

接下來作者舉了學語文兩個和三個的比較, 成果是學雙語者明顯優於單語者,原因是有其相似文字與文法特徵, 所謂的後設語言意識, 就是藉由已知道的語文特徵, 對於新語言的運作機制提升理解上的幫助

要如何畫出你的學習地圖?

短期而言可以針對提升後設學習能力深入研究, 這是一種高強度且自主的本質, 而使之比正規教育學得更快, 比方說短期程式班, 可以幫助比大學學位更快找到工作, 這是因為你可以針對個人所需要能力, 量身訂做你的學習計畫, 不過, 也是有做出不智選擇得到更糟的風險, 為了降低風險, 花些力氣做學習的研究, 找出可以突破現狀的學習訣竅是有幫助的

長期而言, 你應用範圍更大, 因為知曉自己能力, 可以做最佳的時間管理, 也會有有效的策略, 並且學的事情越多, 越有自信, 且享受學習過程

本篇強調短期的研究策略, 原因是長期可從短期疊代出來, 只要一層一層短期累積使用超速學習方式, 熟練運用就可

決定為什麼, 做什麼, 以及怎麼做

這是計畫一開始, 拆解後設學習的好方式

為什麼? 指的是了解學習動機

做什麼? 是你需要取得什麼知識與能力, 把事情拆解成概念, 事實和程序

怎麼做? 指的是你學習時使用的資源 環境 與方法


a 為什麼?

可以拆為功能性及本質性

功能性: 簡單的說, 並不是出於熱誠, 而是為了達到某種有利的成果而學

本質性: 簡單的說, 不帶有其他目的, 純粹為其本質而學

若是計畫屬於功能性, 後設學習的評估就更重要, 需要特別去評估此學習是否達到你想要的有利結果, 比方說讀研究所是否對找工作有幫助?

深入研究的好方法: 專家訪談法

做此研究, 最好跟已經達到你所欲達成目標的人聊一聊, 並且找專家, 並不會困難, 寫封郵件就可以了, 把重點列出來, 簡單說明為何要跟對方聯絡, 並請對方給予15分鐘的對話, 有些專家還是很樂意協助, 這些事情可以避免你花了大把的時間卻學習不重要的事


b 做什麼?

可以在紙上寫下以下三個標題

1概念: 寫下所需要了解的事情, 運作的原則, 也可當作理論

2事實: 寫下需要背的東西, 不需要太深入, 只需要記得, 或是公式類

3程序: 寫下一切需要練習的事, 比方說發音, 不是概念, 也不用背, 只需要重複念

因此, 比方說學醫學需要大量記憶, 你可能要買一套間隔性複習的學習軟體

比方說你要學數學, 你可能要花時間去練習解釋概念, 讓自己真正理解, 藉此來選擇相對正確的工具來幫你達到目標,通常粗略分析就可以到達下一段, 隨著經驗增多, 可以挖更深, 找尋有效學習方法, 隨著一段時間學習, 可以再重新檢視或改正作的方式, 使之成為長期後設學習


c 如何做?

建議兩種方式1 標竿法 2強調排除法

1 標竿法: 簡單的說, 就是找出人們共同學習此項目的方式, 有可能是google該項目的學習課綱, 也有可能採用直接專家訪問法, 此時可以避免學習找錯方向

2 強調排除法: 簡單的說, 比較出其中重要, 或是相對不重要的事情, 將重心放在相對重要的項目上, 比方說要會寫程式, 學習程式開發內部運作重要性明顯大於運算理論


應該要做多少計畫?

首先計畫不是全面, 能開始施力, 就可以試試看, 避免自己拖延研究當學習的藉口

時間上的衡量, 作者是認為百分之十是不錯, 大概十天的進修, 花上一天來規劃, 那麼兩個月的進修, 花上一周來弄清楚是可以的

另外一個可參考的點就是邊際效應遞減, 就是你多花一些時間研究, 到底能不能反應在學習上, 可能一開始花時間在後設學習是有很大幫助, 但是隨著研究已經到一段落, 其實直接學習的效益會比再研究下去還大, 這時就趕緊開始學習才是對自己比較有效益

目前提的都是短期效益, 但是回過頭來, 每次後設學習,都有機會提供你新的學習方法, 蒐集資源的新方式, 以及更好的時間管理, 也可以理一理你的學習動機

每次的成功也會帶給你信心, 這些只能靠親身經驗取得, 作者表示, 有許多人藉由後設學習, 去了解到學習自身覺得困難事物的方法, 帶給他們信心, 並去追求之前從未想過的遠大目標, 然而後設學習, 仍然是為了達到學習效率而做的, 切勿本末倒置而變為研究專家, 而目標遲遲未動工

了解這些後可以進到下個超速學習法則: 專心致志

2022年4月2日 星期六

[超速學習讀書筆記] 第三章 如何成為超速學習者?

 本篇使用一個自願參加超速學習白老鼠計畫的實例揭開對於此方法練習的成果實測

蒙特貝洛是一個音樂家兼企業家, 除了他之外, 還有大約10多人的小組, 大部分是作者的部落格讀者,

一開始他決定要以學習鋼琴為目標, 但是考量他原本就會鋼琴, 也擔任樂團主唱, 這樣的挑戰顯然不具有觀察計畫可行性, 而在他思考後, 決定挑戰公開演說, 其中他之前的演說經驗可以說是頗糟糕,

大部分的時候, 聽者都覺得無聊, 當他說些笑話時, 卻沒有人笑, 而公開演說, 其實是一項綜合技能, 具有培養自信, 說故事, 寫作, 創意, 訪談, 銷售技巧, 涉及好多不同領域

他一開始著手, 是從國際演講協會聚會開始, 他說服了一位資深演說家, 來當作指導協助蒙特貝洛, 完成計畫, 而同時也報名了世界演講冠軍賽, 直到上台, 只剩下一個星期, 因此他全力以赴, 再之後一周完成六場的資格淘汰賽, 當他練習的時候, 有時一天就有兩場比賽, 而他把每場演講都錄下來反覆分析可以改進的地方, 每次演講完他都會詢問其他人意見, 也得到回饋, 教練也提供一些建議, 給他做選擇, 而他總是選對他比較困難的, 因此學習幅度較大,同時, 他也去上即興表達課, 也詢問一位導演朋友的意見, 對方建議他用各種風格來練習演講稿, 比方說, 憤怒, 嘶吼, 饒舌等方式, 這些方法幫助他破除了演講時不自然的情緒

又藉由另外一位舞台劇背景的朋友指導下, 懂得如何表達姿體語言, 他也挑戰和中學生演講, 來挑戰和聽眾能有好的互動,藉由各種不同的練習下, 一個月後, 他在所參加的地方會賽勝出, 打敗了有二十年經驗的對手, 最後也贏得區賽與部賽, 最終他挺進了決賽前十名

後來聽說蒙特貝洛成功的朋友們, 開始紛紛來訊問其如何達到速學的方式, 並有願意出學費來學習的人, 而蒙特貝洛和其指導老師嗅到此商機, 便以此開辦了公司名為超速演說

然而其他一同測試者, 不一定有這麼幸運, 有些人遇到挫折放棄了, 而也有些人則是在各領域中進步著, 即使成果沒這麼顯著, 但是經過一段時間仍能完成一項新技能培養, 蒙特貝洛成功, 來自於他在其中不斷嘗試自己極限可以走多遠

這故事也說明了, 每個人都有可能有他獨特的學習方式, 超速學習可以視為一種高強度的自我演化學習機制, 在於了解運作, 拆解, 簡化, 並快速解決問題並反覆練習, 本書提出了九項法則, 並描繪如何實踐其法則, 作者是參考了參加學習計畫的觀察, 並且個人的經驗, 從不同的方法中, 整理出一些通則, 並將通則與科學文獻比對, 看是否有實驗支持此論點

這九項分別是

1: 後設學習: 先畫一張學習地圖

開始先學習如何來學習該主題, 並做好研究, 並設想如何利用過去能力讓學習新技能簡單化

2: 專心致志: 把刀磨利

培養專注的能力, 始之在學習時能騰出更多時間, 更容易放手去做

3: 直截了當: 走最短的路, 勇往直前

透過實際去做你想擅長的事來學習, 而不是用其他比較方便的或舒服的方式代替

4: 反覆操練: 直擊你最大弱點

要堅決改善你最大弱點, 把複雜的技能拆解成一個個小部分, 然後精通每一部分再組合起來

5: 提取記憶: 用測驗來學習

測驗不僅是評估, 也可以創造知識, 主動去詢問自己知識點, 藉此驗證自己是否學會

6: 意見回饋: 別躲避重拳

回饋是嚴厲, 不舒服的, 要懂得如何利用他, 從回饋中提出自己可以加強, 或是忽略的部分

7: 保留記憶: 別往有漏洞的桶子倒水

要了解你忘記什麼與為何忘記, 要學習不只現在記得, 要永遠記得

8: 培養直覺: 先深掘, 再累積

透過遊戲及對概念或技能探索來培養直覺, 去理解是如何發生, 而不是硬背下來

9: 勇於實驗: 往舒適圈外探索

除了本來遵循的法則之外, 另外探索其他人沒走過的道路或方法, 探索其學習可能性


在原則之上, 最重要的是一種為自己學習負起責任的精神, 就是你想要學什麼, 怎麼學, 成為怎樣一個人, 全都由你自己來學定, 你來掌握全局, 也是對你做出的成果負責, 可以視上面的原則為彈性的方針, 並且這部分, 你必須親自試驗出合適自己的一套超速學習方式

這樣我們可以進到下一章後設學習


2026半年度目標

 1 每個月看看能不能都做專案, 一年12專案 2 刷題每周4題 3 跑個人scrum, 並組讀書會 4規律讀英文ex每天早上8:30-9:30 5規律運動7:35-8:30 6減肥97->85 這是今年年初的目標, 有刷一點題, 但是差不多三月初AI大爆發, 不得不開始接...