2023年7月2日 星期日

interview 資源連結整理

C/C++
C programming Interview questions and answers C++ Interview Questions 
https://www.cquestions.com/2010/10/c-interview-questions-and-answers.html


ptt - 軟韌體工程師面試常考之考古題
https://www.ptt.cc/bbs/NTUE-CS100/M.1300374249.A.C8F.html


Python
https://github.com/taizilongxu/interview_python

  
OOP相關
wiki - 物件導向程式設計 https://zh.wikipedia.org/wiki/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1 

軟體開發的天空 - 系統設計的起點:如何將需求轉為物件導向的設計 https://www.dotblogs.com.tw/jameswu/2008/06/26/4388 

Hank to hanker - [OO] OO物件導向速記 
http://whhnote.blogspot.tw/2010/07/oo-oo.html 
 
物件導向系統分析與設計 吳仁和 著 
http://www.bestwise.com.tw/_trial_files/b2170a/ch03.pdf Ruby Programming/Syntax/Classes 
https://zh.wikibooks.org/zh-tw/Ruby_Programming/Syntax/Classes#.E9.A1.9E.E5.88.A5.E6.96.B9.E6.B3.95.28Class_Method.29

資料識別(Data Identity) 
http://openhome.cc/Gossip/HibernateGossip/DataIdentity.html 
 
Java 快速導覽 - 物件導向概念 static 成員
 http://pydoing.blogspot.tw/2010/11/java-static.html
[OO概念]封裝,繼承,多型 
http://handsome-bridge.blogspot.tw/2013/02/oo.html


網路原理

http://linux.vbird.org/linux_server/0110network_basic.php

專業知識複習:

http://eeepage.info/interview-c/

軟韌體工程師面試- C語言與OS作業系統 常見題目(筆試考題) 內容很豐富,因為資工的東西真的很多,裡面的內容可以幫你快速複習OS以及C語言相 關。

http://eeepage.info/interview-c/2/


process跟thread的差別、multithread的概念、同步問題、deadlock.... pass by value、pass by reference、pass by address...(Java跟C的不同處) 物件導向三大特性、三種封裝的差異、overriding跟overloading解釋... 抽象類別跟介面的不同、constructor建構順序、static相關... C的指標、函數指標、const跟指標的各種組合... SQL語法(大學有修過)...

immutable class觀念

同步問題、semaphore 使用、context switch

verriding vs overloading、記憶體區間 stack 和 heap、保留字 virtual 和 static

GeeksforGeeks

http://geeksquiz.com/quiz-corner/

作業系統 Operating System Concepts

https://mropengate.blogspot.tw/2017/09/operating-system-concepts.html

物件導向設計

https://mropengate.blogspot.tw/2015/11/software-engineering-oop.html

http://teddysoft.tw/courses/agile-skill-ooad/

演算法與資料結構

http://alrightchiu.github.io/SecondRound/mu-lu-yan-suan-fa-yu-zi-liao-jie-gou.html

C/C++ - 常見 C 語言觀念題目總整理

https://mropengate.blogspot.tw/2017/08/cc-c.html

Mr. Opengate 詳細整理面試所需的領域 OS、演算法文章

http://mropengate.blogspot.tw/2017/09/htc.html?m=1

2022年3月13日 星期日

深入淺出設計模式重點整理

設計模式-建構可擴展/易維護的物件導向軟體

OO概念-抽象/封裝/多型/繼承


物件導向原則 1.把會變的東西封裝起來

                       2.多用組合,少用繼承

                       3.針對介面撰寫程式,而不是針對實作

                       4.努力為彼此互動的物件做出鬆耦合設計

                       5.類別應該歡迎擴展,但拒絕修改

                       6.要依賴抽象,不要依賴具體類別


Page 596

模式

敘述

裝飾器

包裝成物件來提供新行為

狀態

封裝成狀態行為

,並使用委託來切換不同行為

迭代器

提供一種方式來遍歷物件集合

,而且部會公開集合實作

門面

簡化一組類別的介面

策略

封裝可互換行為

,並使用委託來決定該使用哪一個

代理

包裝一個物件在某個狀態改變時收到通知

工廠方法

用子類別來決定要建立哪個具體類別

轉接器

包裝一個物件

並未他提供不同的介面

觀察者

讓一群物件在某個狀態改變收到通知

樣板方法

用子類別來決定如何實作演算法步驟

組合

讓用戶端用一致的方式來對待物件集合與個別物件

單例

確保只有一個物件被做出來

抽象工廠

可讓用戶端建立一系列的物件

,而且不需要指令它們的具體類別

命令

將請求封裝成物件

2021年3月19日 星期五

[TDD]3A原則

  在撰寫單元測試的程式碼時,有個3A原則,來輔助設計測試程式,可以讓測試程式更好懂。

3A原則如下:

  1. Arrange: 初始化目標物件、相依物件、方法參數、預期結果,或是預期與相依物件的互動方式
  2. Act: 呼叫目標物件的方法
  3. Assert: 驗證是否符合預期
 public void UnitTest3ARule() {
     //Arrange

     //Act

     //Assert
 
}

[物件導向]SOLID

SOLID所包含的原則是通過引發編程者進行軟體原始碼代碼重構進行軟體的代碼異味清掃,從而使得軟體清晰可讀以及可延伸時可以應用的指南。SOLID被典型的應用在測試驅動開發上,並且是敏捷開發以及自適應軟體開發的基本原則的重要組成部分。 

SOLID 是5大原則的簡稱,分別為:

                  S = Single-responsibility principle (SRP) = 單一職責原則

                       -認為「物件應該僅具有一種單一功能」的概念

                  O = Open–closed principle (OCP) = 開放封閉原則

                       -軟體體應該是對於擴充開放的,但是對於修改封閉的

                  L =Liskov substitution principle (LSP) = 里氏替換原則

                       -程式中的物件應該是可以在不改變程式正確性的前提下被它的子類所替換的

                  I = Interface segregation principle (ISP) = 介面隔離原則

                       -多個特定客戶端介面要好於一個寬泛用途的介面

                  D = Dependency inversion principle (DIP) = 依賴反向原則

                      -依賴於抽象而不是一個實例

2020年1月21日 星期二

[ubuntu18.04] 關機過慢問題 (需要倒數90 sec)

修改/etc/systemd/system.conf:
$ sudo vi /etc/systemd/system.conf
找到這行:#DefaultTimeoutStopSec=90s
可直接修改或在其下新增一行 DefaultTimeoutStopSec=10s
存檔後開機之後生效

2020年1月10日 星期五

[ubuntu18.04]輸入法安裝


 1.進入系統設定值/語言支援, 依照系統的建議的更新下載 
 2.在軟體中心安裝fcitx、fcitx設定、fcitx-qimpanel-configtool 
 3.terminal之下安裝新酷音輸入法:$sudo apt-get install fcitx-chewing
    或是 Synaptic之下安裝新酷音輸入法 fcitx-  chewing
4.預設輸入法框架: fcitx
5.(重新開機)小鍵盤(或小企鵝或任何顯示中、英、酷字樣的按鈕)就會出現在右上方選單列
  參考 http://wenxintaichi.blogspot.com/2018/06/blog-post_29.html

2019年11月4日 星期一

顯示git branch 方法

在 ~/.bashrc新增底下內容
# show git branch
function git_branch { ref=$(git symbolic-ref HEAD 2> /dev/null) || return; echo "("${ref#refs/heads/}")"; } PS1="${HOSTNAME}:\w\[\033[1;32m\]\$(git_branch)\[\033[0m\]$";