---
# System prepended metadata

title: Untitled

---

[TOC]
#  自我介紹

大家好，我是宋浩宇。身為一位對後端工程充滿熱情的新鮮人，我具備扎實的JAVA基礎和對數據庫基礎的理解。於2018年至2022年間，在高雄科技大學獲得資訊工程學士學位，同時透過自主學習LeetCode課程，專注於Java核心概念、物件導向程式設計，以及MySQL資料庫的設計與優化。

在專業技能方面，我精通JAVA和Python，並注重使用MySQL進行高效的數據庫管理。

專案經驗：

我參與的一項重要專案是基於FaceNet架構的人臉辨識和語音輔助系統。我在這個多層面的專案中擔任前後端開發和MySQL數據庫的設計與優化角色。運用Python、Flask、OpenCV和MySQL等技術，我成功實現了用戶辨識、語音提供，以及網頁式判斷，確保系統數據的安全性和一致性。在這個過程中，我深刻參與團隊討論，與成員協作解決技術挑戰，確保按時交付高品質的產品。

個人特質：

我深信卓越成果來自於優異的團隊合作和持續學習。閱讀專業文獻，並努力追求新技術，以不斷優化自己的技能和知識。

期待能夠在貴公司發揮我的熱情和技能，並貢獻於團隊的成功。謝謝！
# en
Hello It is my pleasure as an interviewee to meet you, I’m so delighted that I could come here today!

I'm Haoyu Sung. a fresh graduate about Computer Science,
I obtained a Bachelor's degree in CSIE from nkust between 2018 and 2022. During this time, I also focused on self-learning through LeetCode , specializing in Java and MySQL.

I possess a solid foundation in JAVA and a good understanding of database .
I also have a basic understanding of other programming languages and  continuously self-learning.

My independent study is,
Face recognition and voice assistance based on the FaceNet.
In this study, I played roles in frontend , backend and MySQL design .
Utilizing technologies such as Python, Flask, OpenCV, and MySQL,

Step1.take a photo to send object detection on the image using YOLOv4.
Step2.Use the MTCNN algorithm to locate facial images , and then input these images into FaceNet for comparison.
Step3.Extract the color of the clothing area and determine the closest color 
Step4.Combine the results from the above steps to create a descriptive sentence about the person, and output  text and voice message.
Step5.Return the data back to the database  that it can be used the next time you train the module.

Through this study, I actively engaged in team discussions, collaborated with team members to solve technical challenges, and ensured the timely delivery of high-quality products.
However, there are still some functionalities that have not been thoroughly perfected. 
For instance, when detecting body, interference can lead to misjudgments regarding clothing information.
Additionally, the system has not yet  deployed to the server for testing.


I believe that outstanding results is excellent teamwork and continuous learning.
I look forward to contributing my passion and skills to the success of your company and team. Thank you!
# 物件導向
資料的形式(屬性, Field)以及對資料的操作(方法, Method)

## 物件(Object)
物件也就是類別的實例

## 封裝 (Encapsulation)
物件內部的資料隱藏起來 只能透過物件本身所提供的介面取得物件內部屬性或者方法

## 繼承 (Inheritance)
在某種情況下，一個類別會有「子類別」。子類別比原本的類別(稱為父類別)要更加具體化，也就是說子類別繼承了父類別。例如：計程車(子類別)繼承了汽車(父類別)原有的屬性以及方法，也新增了自己特有的屬性(driverName)。

## 多型 (Polymorphism)
簡單來說就是相同名稱的方法(Method)，多個相同名稱的方法，傳入不同的參數，會執行不同的敘述。多型(Polymorphism)則包含多載(Overloading)和複寫(Overriding)。

多載(Overloading) — 是指說在相同類別中，定義名稱相同，但是參數個數不同，或是參數型態不同的函式，這樣就可以利用參數個數或者參數型態，呼叫到對應的方法。例如：一個計算面積的方法，如果傳入一個參數，就當正方形來算面積；傳入兩個參數，就當成長方形來算面積。
複寫(Overriding) — 是指覆寫掉父類別中的函式。例如：動物類別(父類別) getLegs()方法被鳥類別(子類別)覆蓋。
# MVC
MVC 是什麼?以及MVC架構的優點與缺點?

MVC是程式設計的一種架構方法，主要涵蓋模型（Model）、視圖（View）和控制器（Controller）。

模型（Model） — 程式設計師編寫程式應有的功能（實現演算法等等）、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。Model 負責資料存取。
視圖（View） — 介面設計人員進行圖形介面設計。View 負責顯示資料。
控制器（Controller）- 負責轉發請求，對請求進行處理。Controller 負責處理訊息。
優點
1.好維護、方便擴充
2.控制器與 Model 和 View 保持相對獨立，所以可以方便的改變應用程式的資料層和業務規則。
3.多個 View 能共享一個 Model，大幅度提高程式重複使用性。

缺點
1.開發時間長
2.分層細
# redireact forward
sendRedirect() 跟 forward(request,response)的差別

forward
1.定義在RequestDispatcher的介面，由request.getRequestDispatcher呼叫
2.內部轉址,url不會顯示程式名稱(可設定成參數)
3.可透過setAttribute傳遞參數(因為是內部傳址)
4.效率高
5.適用於權限管理轉頁時使用

sendRedirect()
1.定義在HttpServletResponse
2.直接外部呼叫另一支程式，會顯示程式名稱
3.效率較低(因為client會在request一次)
4.適用於跳到外部網站或回主畫面使用
# RESTful
POST http://localhost:8080/mvc/index - 添加用户信息，携带表单数据
GET http://localhost:8080/mvc/index - 获取用户信息，携带表单数据
PUT http://localhost:8080/mvc/index/{id} - 修改用户信息，id直接放在请求路径中
DELETE http://localhost:8080/mvc/index/{id} - 删除用户信息，id直接放在请求路径中
# Git 
Git 是一個分散式版本控制軟體，能夠紀錄檔案的狀態變化
Git flow 可以開不同的分支，讓程式能夠在不同的分支上做開發
master
develop
feature 
release
hotfix

# static
static 是一個關鍵字，是用來修飾成員(member，類別的屬性、方法或子類別)，使其成為靜態成員。
靜態的意思是，在程式載入記憶體的時候，跟著程式一起在記憶體中佔有空間，而不是主程式開始執行後才跟記憶體要空間。

# public
private - 私有，标记为私有的内容无法被除当前类以外的任何位置访问。
什么都不写 - 默认，默认情况下，只能被类本身和同包中的其他类访问。
protected - 受保护，标记为受保护的内容可以能被类本身和同包中的其他类访问，也可以被子类访问（子类我们会在下一章介绍）
public - 公共，标记为公共的内容，允许在任何地方被访问。
![image](https://hackmd.io/_uploads/HyBj16_qT.png)
```
public class Person {
    private String name;    //现在类的属性只能被自己直接访问
    private int age;
    private String sex;
  
  	public Person(String name, int age, String sex) {   //构造方法也要声明为公共，否则对象都构造不了
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public String getName() {
        return name;    //想要知道这个对象的名字，必须通过getName()方法来获取，并且得到的只是名字值，外部无法修改
    }

    public String getSex() {
        return sex;
    }

    public int getAge() {
        return age;
    }
}
```

# abstract
抽象类一般只用作继承使用 不能NEW

# interface
接口一般只代表某些功能的抽象

# set
我們發現介面中定義的方法都是Collection中直接繼承的，因此，Set支援的功能其實也就跟Collection定義的差不多，只不過：
不允許重複元素 
不支援隨機存取（不允許透過下標存取）
# map
key,value
Map中無法加入相同的鍵，同樣的鍵只能存在一個，即使值不同。如果出現鍵相同的情況，那麼會覆蓋掉之前的