九月財經課程 FinLab 會推出三堂直播課程,直播課的好處就是可以跟老師面對面直接互動,另外有任何的問題也可以當場提出來一起討論~課程當中,我們主要是針對台股分析,並且分享我們這一年花很多時間打造的 API 平台!
第一堂課程(9/8)當中,我們會教你怎麼用 Python 製作 ADLs 指標,這個指標對於選小型股很有用!課程難度屬於非常簡單,不需要任何程式基礎,可以用於投資時的加減碼。
第二堂課程(9/15)「量化投資第一步:用 Python 實作看盤工具,體驗策略選股」我們會製作 Python 的看盤工具!課程當中還會介紹很多策略,會提供很多選股邏輯,幫助你可以蒐集選股策略!
第三堂課程(9/29),我們將結合 AI 來訓練一個財報機器人,讓它幫我們篩選體質好的股票!
這三堂課程教材都是全新製作,所以不用擔心會與原本的課程重疊,相信就算已經上過線上課程,還是可以學到很多東西,也可以跟大家有更多互動,一起討論,非常歡迎大家一起來上課喔!
目前第一個禮拜的課程釋出,歡迎想要學習 Python 的初學者加入,讓你用最有趣的方式學習 Python,至於進階課程,將在之後慢慢揭曉,追蹤起來不要錯過囉!
https://bit.ly/3gysQps
「python時間相減分鐘」的推薦目錄:
- 關於python時間相減分鐘 在 FinLab財經實驗室 Facebook 的最讚貼文
- 關於python時間相減分鐘 在 台灣物聯網實驗室 IOT Labs Facebook 的精選貼文
- 關於python時間相減分鐘 在 小吃貨的英國生活日記 Facebook 的最佳貼文
- 關於python時間相減分鐘 在 Python 使用datetime 日期相減 - ShengYu Talk 的評價
- 關於python時間相減分鐘 在 【こつこつPython】Pythonで時間差の計算をする方法 的評價
- 關於python時間相減分鐘 在 so-vits-svc/README_zh_CN.md - 4.1-Stable - GitHub 的評價
python時間相減分鐘 在 台灣物聯網實驗室 IOT Labs Facebook 的精選貼文
機器學習識別特徵阻絕代測 上鏈回送監理資料庫防竄改
人臉辨識加酒精鎖阻酒駕 串區塊鏈上傳比對告警
2021-05-24社團法人台灣E化資安分析管理協會元智大學多媒體安全與影像處理實驗室
本文將介紹酒精防偽人臉影像辨識系統,結合了人臉辨識、酒精鎖以及區塊鏈應用,以解決酒駕問題,並透過監控系統避免代測狀況發生。且利用區塊鏈不可修改的特性,將車輛與人臉資料串上區塊鏈,以確保駕駛人的不可否認性。
長長期以來「酒駕」都是一個很嚴肅且必須被重視的議題,儘管在2019年立法院修法酒駕及拒絕酒測的罰則,但是抱持僥倖心態的人還是數不勝數,導致因酒駕釀成車禍的悲劇還是一再重演,讓不少的家庭因此破滅。
據統計,從2015年到2018年的酒駕取締件數都逾10萬件,而因為酒駕車禍的死亡人數逾百人。在2019年酒駕新制上路以後,2020年警方酒駕取締件數有明顯下降至約6萬件,雖然成功達到嚇阻效果,但是死亡人數仍與去年前年持平,可見離完全遏止酒駕還有很長的路需要努力。
立法院於2018年三讀通過了「道路交通管理處罰條例部分條文修正案」,酒駕者必須重新考照,並且只能駕駛具有酒精鎖(Alcohol Interlock)的車輛,所謂酒精鎖,屬於車輛點火自動鎖定裝置,在汽車發動前必須進行酒測,通過才能將汽車發動,而且在每45分鐘至60分鐘後酒精鎖系統就會要求駕駛人在一定時間內進行重新酒測,以便防範在行車過程中有飲酒的情況發生,若駕駛人未遵守其要求,車子就會強制熄火並鎖死,必須回酒精鎖服務中心才能將鎖解開。
由於法案的方式無法完全遏止酒駕,因此許多創新科技或是企業致力於研究相關科技來解決酒駕的問題。
其中本田(Honda)汽車與日立(Hitachi)公司研發出手持型酒精含量檢測裝置,讓駕駛人必須在駕駛之前都先進行酒測,若酒精濃度超標就會將汽車載具上鎖,藉此避免酒駕意外或事故發生,且該技術結合了智慧鑰匙功能,若偵測到酒測值超標,車輛中的顯示面板將會發出警告訊號告知駕駛人,避免酒駕上路之問題。
另一方面則是解決酒精殘值之問題,因為有許多駕駛人都會認為,休息一下後,身體也無感到不適,即駕車出門,等到駕駛人被警方臨檢時才知道酒測未通過,因此收到罰單,甚至是吊銷駕照處罰等。
根據醫學研究指出,酒精是在人體體內由肝臟代謝,實際代謝時間必須看體質以及飲酒量而定。台灣酒駕防制社會關懷協會建議,喝酒後至少要10至20小時後再駕車比較安全。多數人無具備酒精代謝時間的觀念,導致駕駛人貿然上路,待意外發生或罰單臨頭時,已經為時已晚。
背景知識說明
本文介紹的方法為酒精鎖結合攝影鏡頭進行人臉辨識,並將人臉特徵資料與車輛資料串上區塊鏈,並利用區塊鏈不可篡改的特性,來避免駕駛人在解鎖酒精鎖時發生他人代測的問題。
由於人臉辨識技術具備防偽性、身分驗證的特性,因此將酒精鎖的技術結合人臉辨識,便可確認為駕駛本人。
何謂人臉辨識
人臉辨識技術屬於生物辨識的一種,基於人工智慧、機器學習、深度學習等技術,將大量人臉的資料輸入至電腦中做為模型訓練的素材,讓電腦透過演算法學習人類的面部特徵,藉以歸納其關聯性最後輸出人臉的特徵模型。
目前人臉辨識技術已經遍佈在日常生活之中,其應用面廣泛,最為常見的應用即為智慧型手機的解鎖、行動支付如LINE Pay、Apple Pay等,其他應用還包括行動網路銀行、網路郵局、社區大樓門禁管理系統、企業監控系統、機場出入關、智能ATM、中國天眼系統等。一般來說,人臉辨識皆具備以下幾個特性:
‧ 普遍性:屬於任何人皆擁有的特徵。
‧ 唯一性:除本人以外,其他人不具相同的特徵。
‧ 永續性:特徵不易隨著短時間有大幅的改變。
‧ 方便性:人臉辨識容易實施,設備容易取得,如相機鏡頭。
‧ 非接觸性:不須直接接觸儀器,也可以進行辨識,這部分考量到衛生問題以及辨識速度。
人臉辨識透過人臉特徵的分析比對進行身分的驗證,別於其他生物辨識如虹膜辨識、指紋辨識,無須近距離接觸,也可以精準地辨識身分,且具有同時辨識多人的能力。因應新冠肺炎疫情肆虐全球,人臉辨識技術也被用來管理人來人往的人流。人臉辨識的儀器可以搭配紅外線攝影機來測量人體體溫,在門禁進出管制系統中,利於提高管理效率,有效掌握到進出人員的身分,以及幫助衛生福利部在做疫調時更容易掌握到確診病患行經的足跡。
人臉辨識的步驟
人臉辨識的過程與步驟,包括人臉偵測、人臉校正、人臉特徵值的摘取,進行機器學習與深度學習、輸出人臉模型,從影像中先尋找目標人臉,偵測到目標後會將人臉進行預處理、灰階化、校正,並摘取特徵值,接著人臉資料交給電腦進行機器學習與深度學習運算,最後輸出已訓練好的模型。相關辨識的步驟,如圖1所示。
人臉偵測
基於Haar臉部檢測器的基本思想,對於一個一般的正臉而言,眼睛周圍的亮度較前額與臉頰暗、嘴巴比臉頰暗等其他明顯特徵。基於這樣的模式進行數千、數萬次的訓練,所訓練出的人臉模型,其訓練時間可能為幾個小時甚至幾天到幾周不等。利用已經訓練好的Haar人臉特徵模型,可以有效地在影像中偵測到人臉。
Python中的Dilb函式庫提供了訓練好的人臉模型,可以偵測出人臉的68個特徵點,包括臉的輪廓、眉毛、眼睛、鼻子、嘴巴。基於這些特徵點的資料就能夠進行人臉偵測,如圖2~4所示。圖中左上角的部分是偵測到的分數,若分數越高,代表該張影像就越可能是人臉,右側括弧中的編號代表子偵測器的編號,代表人臉的方向,其中0為正面、1為左側、2為右側。
人臉的預處理
偵測到人臉後,要針對圖片進行預處理。通常訓練的影像與攝影鏡頭拍出來的照片會有很大的不同,尤其會受到燈光、角度、表情等影響,為了改善這類問題,必須對圖片進行預處理以減少這類的問題,其中訓練的資料集也很重要:
‧ 幾何變換與裁剪:將影像中的人臉對齊與校正,將影像中不重要的部分進行裁切,並旋轉人臉,並使眼睛保持水平。
‧ 針對人臉的兩側用直方圖均衡化:可以增強影像中的對比度,可以改善過曝的影像或是曝光不足的問題,更有效地顯示與取得人臉目標的特徵點。
‧ 影像平滑化:影像在傳遞的過程中若受到通道、劣質取樣系統或是受到其他干擾導致影像變得粗糙,藉由使用圖形平滑處理,可以減少影像中的鋸齒效應和雜訊。
人臉特徵摘取
關於人臉特徵摘取,相關的技術說明如下:
‧ 歐式距離:人臉辨識是一個監督式學習,利用建立好的人臉模型,將測試資料和訓練資料進行匹配,最直觀的方式就是利用歐式距離來計算所有測試資料與訓練資料之間的距離,選擇差距最小者的影像作為辨識結果。由於人臉資料過於複雜,且需要大量的訓練集資料與測試集資料,會導致計算量過大,使辨識的速度過於緩慢,因此需要透過主成分分析法(Principal Components Analysis,PCA)來解決此問題。
‧ 主成分分析法:主成分分析法為統計學中的方法,目的是將大量且複雜的人臉資料進行降維,只保留影像中的主成分,即為影像中的關鍵像素,以在維持精確度的前提下加快辨識的速度。先將原本的二維影像資料每列資料減掉平均值,並計算協方差矩陣且取得特徵值與特徵向量,接著將訓練集與測試集的資料進行降維,讓新的像素矩陣中只保留主成分,最後則將降維後的測試資料與訓練資料做匹配,選擇距離最近者為辨識的結果。由於影像資料經過了降維的步驟,因此人臉辨識的速度將會大幅度地提升。
‧ 卷積神經網路:卷積神經網路(Convolutional Neural Network,CNN)是一種神經網路的架構,在影像辨識、人臉辨識至自駕車領域中都被廣泛運用,是深度學習(Deep Learning)中重要的一部分。主要的目的是透過濾波器對影像進行卷積、池化運算,藉此來提取圖片的特徵,並進行分類、辨識、訓練模型等作業。在人臉辨識的應用中,首先會輸入人臉的影像,再透過CNN從影像提取像素特徵並轉換成特定形式輸出,並用輸出的資料集進行訓練、辨識等等。
何謂酒精鎖
酒精鎖(圖5)是一種裝置在車輛載體中的配備,讓駕駛人必須在汽車發動前進行酒測,通過後才能將車輛發動。且每隔45分鐘至60分鐘會發出要求,讓駕駛人在時間內再次進行檢測。
根據歐盟經驗,提高罰款金額以及吊銷駕照只有在短期實施有效,只有勸阻的效果,若在執法上不夠嚴謹,被吊照者會轉變成無照駕駛,因此防止酒駕最有效的方法就是強制讓駕駛人無法上路,這就是「酒精鎖」的設計精神。
在本國2020年3月1日起酒駕新制通過後,針對酒駕犯有了更明確且更嚴厲的規定,在酒駕被吊銷駕照者重考後,一年內車輛要裝酒精鎖,未通過酒測者無法啟動,且必須上15小時的教育訓練才能重考,若酒駕累犯三次,要接受酒癮評估治療滿一年、十二次才能重考。
許多民眾對於「酒精鎖」議論紛紛,懷疑是否會發生找其他人代吹酒精鎖的疑慮,為防範此問題,酒精鎖在啟動後的五分鐘內重新進行吹氣,且汽車在行駛期間的每45至60分鐘內,便會隨機要求駕駛重新進行酒測,如果沒有通過測量或是沒有測量,整合在汽車智慧顯示面板的酒精鎖便會發出警告,並勸告駕駛停止駕車。
對於酒精鎖的實施,目前無法完全普及到每一台車子,而且對於沒有飲酒習慣的民眾而言,根本是多此一舉,反而增加不少麻煩給駕駛。若還有每45~60分鐘的隨機檢測,會導致多輛汽車必須臨時停靠路邊進行檢測,可能加劇汽車違規停車的發生頻率。
認識區塊鏈
區塊鏈技術是一種不依賴於第三方,透過分散式節點(Peer to Peer,P2P)來進行網路數據的存儲、交易與驗證的技術方法。本質上就是一個去中心化的資料庫,任何人在任何時間都可以依照相同的技術標準將訊息打包成區塊並串上區塊鏈,而這些被串上區塊鏈的區塊無法再被更改。區塊鏈技術主要依靠了密碼學與HASH來保護訊息安全,也是賦予區塊鏈技術具有高安全性、不可篡改性以及去中心化的關鍵。區塊鏈相關概念,如圖6所示。
區塊鏈的原理與特性
可以將區塊鏈想像成是一個大型公開帳本,網路上的每個節點都擁有完整的帳本備份,當產生一筆交易時,會將這筆交易廣播到各個節點,而每個節點會將未驗證的交易HASH值收集至區塊內。接著,每個節點進行工作量證明,選取計算最快的節點進行這些交易的驗證,完成後會把區塊廣播給到其他節點,其他節點會再度確認區塊中包含的交易是否有效,驗證過後才會接受區塊並串上區塊鏈,此時就無法再將資料進行篡改。
關於區塊鏈的特性,可分成以下四部分做說明:
1. 去中心化:區塊鏈其中一個最重要的核心宗旨,就是「去中心化」,區塊鏈採用分散式的點對點傳輸,該概念架構中,節點與節點之中沒有所謂的中心,所有的操作都部署在分散式的節點中,而無須部署在中心化機構的伺服器,一筆交易或資料的傳輸不再需要第三方的介入,因此又可以說每個節點就是所謂的「中心」。這樣的結構也加強了區塊鏈的穩定性,不會因為其中的部分節點故障而癱瘓整個區塊鏈的結構。
2. 不可篡改性:透過密碼學與雜湊函數的運用來將資料打包成區塊並上鏈,所有區塊都有屬於它的時間戳記,並依照時間順序排序,而所有節點的帳本資料中又記錄了完整的歷史內容,讓區塊鏈無法進行更改或是更改成本很高,因此使區塊鏈具備「不可篡改性」,並且同時確保了資料的完整性、安全性以及真實性。
3. 可追溯性:區塊鏈是一種鏈式的資料結構,鏈上的訊息區塊依照時間的順序環環相扣,這便使得區塊鏈具有可追溯的特性。可追本溯源的特性適用在廣泛的領域中,如供應鏈、版權保護、醫療、學歷認證等。區塊鏈就如同記帳帳本一般,每筆交易記錄著時間和訊息內容,若要進行資料的更改,則會視為一筆新的交易,且舊的紀錄仍會存在無法更動,因此仍可依照過去的交易事件進行追溯。
4. 匿名性:在去中心化的結構下,節點與節點之間不分主從關係,且每個節點中都擁有一本完整的帳本,因此區塊鏈系統是公開透明的。此時,個人資料與訊息內容的隱私就非常重要,區塊鏈技術運用了HASH運算、非對稱式加密與數位簽章等其他密碼學技術,讓節點資料在完全開放的情況下,也能保護隱私以及用戶的匿名性。
區塊鏈與酒精鎖
由於區塊鏈的技術具備去中心化、記錄時間以及不可篡改的特性,且更加強酒精鎖的檢測需要身分驗證的保證性。當進行酒精鎖檢測解鎖時,系統記錄駕駛人吹氣時間以及車輛的相關資訊,還有人臉特徵資料打包成區塊並串上區塊鏈。因此,在同一時間當監控系統偵測到當前駕駛人與吹氣人不同時,此時區塊鏈中所記錄的資料便能成為一個強而有力的依據,同時也能讓其他的違規或違法事件可以更容易進行追溯。
酒駕防偽人臉辨識系統介紹
為了解決酒精鎖發生駕駛人代測的問題,酒精鎖產品應導入具有身分驗證性的人臉辨識技術。酒駕防偽人臉辨識系統即為駕駛人在進行酒精鎖解鎖時,要同時進行人臉辨識,來確保駕駛人與吹氣人為同一人。
在駕駛座前方的位置會安裝攝影鏡頭,作為駕駛的監控裝置。進行酒測吹氣的人臉資料將會輸入到該系統中的資料庫儲存,並將人臉資料以及酒測的時間戳記打包成區塊串上區塊鏈,當汽車已經駛動時,攝影鏡頭將會將當前駕駛人畫面傳回系統進行人臉比對驗證。如果驗證成功,會將通過的紀錄與時間戳一同上傳至區塊鏈,若是系統偵測到駕駛人與吹氣人為不同對象,系統將發出警示要求駕駛停車並重新進行檢測,並同時將此次異常的情況進行記錄上傳到區塊鏈中。
如果駕駛持續不遵循系統指示仍持續行駛,該系統會將區塊鏈的紀錄傳送回給開罰的相關單位,並同時發出警報以告知附近用路人該車輛處於異常情況,應先行迴避。且該車輛於熄火後,酒精鎖會將車輛上鎖,必須聯絡酒精鎖廠商或酒精鎖服務中心才能解鎖。相關的系統概念流程圖,如圖7所示。
區塊鏈打包上鏈模擬
在進行酒測解鎖完畢以及進行人臉資料儲存後,會透過CNN將影像轉換輸出成128維的特徵向量作為人臉資料的測量值,接著將128個人臉特徵向量資料取出,並隨著車輛資訊一起打包到同一個區塊,然後串上區塊鏈。取出的人臉特徵資料,如圖8所示。
要打包成區塊和上鏈的內容,包括了人臉特徵資料、車牌號碼、酒測解鎖時間點等相關輔助資料,接著透過雜湊函數將相關的資料打包成區塊。以車牌號碼ABC-1234為例,圖9顯示將車輛資料和人臉資料進行區塊鏈的打包,並進行HASH運算。
將人臉資料和車輛相關資料作為一次的交易內容,並打包區塊,經過HASH後的結果如圖10所示,其中prev_hash屬性代表鏈結串列指向前一筆資料,由於這是實作模擬情境,並無上一筆資料,其中messages屬性代表內容數,一筆代表車牌資料,另一筆則為人臉資料。time屬性則代表區塊上鏈的時間點,代表車輛解鎖的時間點。
情境演練說明
話說小禛是一間企業的上班族,平時以開車為上下班的交通工具,他的汽車配置了酒駕防偽影像辨識系統,以下模擬小禛下班後準備開車的情境。
已經下班的小禛今天打算從公司開車回家,當小禛上車準備發動車子時,他必須先拿起安裝在車上的酒測器進行吹氣,並將臉對準攝影鏡頭讓系統取得小禛的人臉影像。小禛在汽車發動前的人臉影像,如圖11所示。
待攝影鏡頭偵測到小禛的人臉後,接著系統便會擷取臉上五官的68個特徵點,如圖12所示。然後,相關數據再透過CNN轉換輸出成128維的特徵向量作為人臉資料的測量值,如圖13所示。
酒精鎖通過解鎖後,車輛隨之發動,解鎖成功的時間點將會記錄成時間戳記,隨著影像與相關資料串上區塊鏈。在行駛途中,設置在駕駛座前方的鏡頭將擷取目前駕駛的人臉,以取得駕駛人的128維人臉特徵向量測量值,並且與汽車發動前所存入的人臉資料進行比對,藉以判斷目前的駕駛人與剛才的吹氣人臉是否為同一位駕駛。當驗證通過後,也會再將通過的紀錄與時間戳上傳至區塊鏈中,如此一來,區塊鏈的訊息內容便完整記載了這一次駕車的紀錄,檢測通過的示意圖如圖14所示。
系統通過辨識後,便確認了駕駛人的身分與吹氣人一致。且透過時戳的紀錄和區塊鏈的輔助,也確保了駕駛的不可否認性。若有其他違規事件發生時,區塊鏈的紀錄便成為一個強而有力的依據來進行追溯。
如此一來,便可以預防小禛喝酒卻找其他人代吹酒測器的情況發生。在駕駛的途中,如果有需要更換駕駛人,必須待車輛靜止時,從車載系統發出更換駕駛要求,再重新進行酒測以及重複上述流程,才可以更換駕駛人。如果沒有按照該流程更換駕駛,系統將視為異常情況。
結語
酒駕一直是全球性的問題,將有高機率導致重大交通事故,造成人員傷亡、家庭破碎,進而醞釀後續更多的社會問題,皆是酒駕所引發的不良效益。為了解決酒駕的問題,各個國家都有不同的酒駕標準或是法律規範,但是大部分國家的規範和制度都只有嚇阻作用卻無法完全遏止。在不同的國家防止酒駕的方式不盡相同,有的國家如新加坡,透過監禁及鞭刑來遏止酒駕犯,又或者是薩爾瓦多,當發現酒駕直接判定死刑,這樣的制度雖嚇阻力極強,但是若讓其他國家也跟進,會造成違憲或是違反人權等問題。因此,各國都在酒駕的問題方面紛紛投入研究,想要達到零酒駕的社會。
為達成此理想,本文介紹了基於區塊鏈的酒駕防偽辨識系統,利用酒精鎖搭配人臉辨識技術以及區塊鏈技術,使有飲酒的駕駛人無法發動汽車。且該系統搭載在行車電腦中,結合攝影鏡頭的監控對駕駛進行酒測防制管理,將人臉資料、酒精鎖、解鎖時間點與相關資訊打包成區塊並上鏈。基於區塊鏈技術內容的不易篡改,可加強駕駛人的不可否認性,當汽車發生異常情況時,便能利用有效且可靠的依據進行追溯。人工智慧和物聯網時代已經來臨,透過酒駕防偽辨識系統來改善酒駕問題,在未來能夠普及並結合法規,智慧汽車以及智慧科技的應用將會帶給人們更安全、更便利的社會。
附圖:圖1 人臉辨識的步驟。
圖2 人臉特徵點偵測(正臉)。
圖3 人臉特徵點偵測(左側臉)。
圖4 人臉特徵點偵測(右側臉)。
圖5 酒精鎖。 (圖片來源:https://commons.wikimedia.org/wiki/File:Guardian_Interlock_AMS2000_1.jpg with Author: Rsheram)
圖6 區塊鏈分散式節點的概念圖。
圖7 系統概念流程圖。
圖8 取出人臉128維特徵向量。
圖9 儲存車輛相關資料及人臉資料到區塊。
圖10 HASH後及打包成區塊的結果。
圖11 汽車發動前小禛的人臉影像。
圖12 小禛的人臉影像特徵點。
圖13 小禛的人臉特徵向量資料。
圖14 系統通過酒測檢測者與駕駛人為同一人。
資料來源:https://www.netadmin.com.tw/netadmin/zh-tw/technology/CC690F49163E4AAF9FD0E88A157C7B9D
python時間相減分鐘 在 小吃貨的英國生活日記 Facebook 的最佳貼文
#軟體工程師面試 #文長慎入
面試問題好像一直以來都是一個很多人關切的環節,在各大版上也一直有人會詢問。因為之前有幫公司面試一些人,還有加上從朋友那邊搜刮來的經驗,概括分享一下。
這邊感覺可以分成幾個部分:
1. 面試的題目是否都是演算法相關題目?
2. 是為什麼實際工作內容通常都和面試考的沒有相關?
3. 我現在學的東西對找工作是否有幫助?
4. 公司招募看的到底是這個人的學經歷,能力,個性,還是什麼,為什麼有些人很感覺很厲害卻一直無法拿到offer?
其實用FB排版不太容易,但因為懶得登入部落格,想說快速地打一打,所以也請各位見諒。
#面試的題目是否都是演算法相關題目
如果是投FANG之類的,Facebook Amazon, Neflix, Google (沒記錯應該是這幾間),反正就是這些有名的大廠,除了Netflix目前沒有遇到認識的聊過,其他都是考演算法沒錯。
當然也不只有會考演算法,根據你申請的職缺,可能也會加考一些其他的東西。
那其公司是怎樣呢?其實還是有很多公司會考演算法相關的,尤其是線上面試。
雖然在疫情下全都是線上,但一般來說,還是會有分兩種,一種是沒有真人的狀況下,就是給你像是HackRank這種網站,你點開可能有六十分鐘讓你做兩題。
做完以後你提交,你也不會知道你的分數跟分析結果之類的,看公司怎麼做設定,而且除了演算法相關題目,也可以設定選擇題之類的。
另一種就是真人面試,通常電腦自動面完以後,你可能會跟真人線上面試,真人也是會給你類似所謂的白板題,就是出一個題目讓你現場解題,然後中間可能有的會要你跟他討論,當然看面試官拉!
比較加分的還是,你編寫的時候可以邊闡述自己的想法,而不是低頭默默寫完,這樣也是有點尷尬。如果你編寫邊闡述的話,或者是少有點互動,也是展現你的溝通能力以及你對於題目的掌握能力,就像是你看到一個很簡單的題目 (2+3)*5 之類的,你可以很有自信的說,喔因為2+3在括弧裡面,所以要先算,然後再乘以5,展現底是真的有理解,而不是就是背題目之類的。
有些公司也可能是給你回家作業,叫你做一個小專案之類的,看你應徵的職缺,可能是叫你做一個UI 或者叫你建一個API 也可能叫你做一整個比較完整的東西出來。如果你是面試架構師的話,可能會叫你建一個架構,或設計一個架構出來。
然後也有的公司(像我們公司)就是需要pair programming 所以在線上面試的階段就是會有,真人跟你一起寫程式這樣。
#為什麼實際工作內容通常都和面試考的沒有相關
這個部分一直以來都是一個難解的謎題。像是Google Facebook這種大公司其實不難理解,畢竟他們是比較類似General 的招募,不是一開始就決定好你就是要去某個Team然後永遠讓你待在那個Team。就他們招募的是他們覺得,有潛力的人才,這樣不管需要做什麼都可以自由移動他們,給他們training就可以變得很好用。加上他們一次招募的數量也是相當龐大,考演算法相關的話,可以快速篩選,也更有機會找到他們需要的人才。
因為像是Facebook或Google這種有自己開發框架,開發技術的公司,他們的確有很多時候需要寫演算法或者系統優化的工作。
那像是普通的中小企業或新創,說真的,其實就是跟風。因為覺得人家Google Facebook都是這樣找到優秀人才,那我們也要依樣畫葫蘆,這樣鐵定也能找到厲害的人。
可是這樣找到的人進去以後,發現公司好像也是不知道在幹嘛,最後可能也會待不下去。所以這個部分,近年來也越來越多公司開始改進,開始思考什麼樣的招募流程最適合自己公司。
像是pair programming也開始成為近年來的一個流行的面試,有的公司並不是真的pair 但就是你要跟他們一起工作,了解他們公司的文化,或者跟他們的工程師進行一些深度討論。或者會問你說,假設給你設計一個系統,你要怎麼做之類的。
當然,面試問題跟流程都是每間公司各有不同,不是說你現在準備一種就萬無一失。所以說最好還是盡可能的,提升自己的基礎能力。
如果真的就是打算以FANG為目標的話,就可以從刷題開始,像是Leetcode, Hackrank, codewars之類的都不錯。之前有看到一篇文章,他刷了幾百題,而且每題刷了三次以上,真的很有毅力。刷題的重點就是在於熟練那些題目,可是也不要硬背,你練習是要練那個速度感。可是該理解的還是要理解。
因為你進公司以後,你還是需要使用那些東西來工作,不是只是為了刷題而刷題,而且面試官可能也會考你變形題之類的,或者問你一些記憶體相關的問題,或者是系統設計的問題,或者單純想知道,你是怎麼想出解法的,所以硬背題目跟答案其實也是不太行。
目前我的了解是,大部分中小型企業或者新創,很多時候你學習新東西的能力是比演算法更重要的,尤其是新創你什麼都要會,假設公司是剛起步的新創,你就要變成公司主要的技術專家,什麼東西不太會也要馬上現學現賣,也不要期望公司可能會給你什麼Training 或者有人給你依靠,可能同事還要依靠你。
中型或者普通大型企業,假設公司已經有產品的話,大部分的時候可能是既有產品維護,除非你剛好很幸運地在新產品開發的Team,這樣就有機會學到很多東西,不然維護的話,很多時候只是在了解產品本身是否有Bug,改善code品質之類,也要看公司是否有想花成本在維護上面。如果公司就是打算一個產品,改一點東西就繼續賣錢,那樣好像也不太需要一直去migrate 或者搞新東西上去。
如果你剛好很幸運在獨角獸新創,那你不但可以學到很多東西,還可以用最新科技,可能還有機會遇到大神帶你。
所以說選公司其實也是有點重要,面試的時候,可以問問他們說,那你平常的daily work是怎麼樣的,公司有沒有走敏捷開發,公司有沒有用雲端,公司一個Team的規模之類,以及公司會不會提供訓練。
#我現在學的東西對找工作是否有幫助
其實這個就要看你的未來三年五年十年規劃。
假設你就是都在寫前端,你也覺得我要寫前端寫一輩子,那好像就可以繼續一直focus在前端。如果你擔心自己會丟飯碗,是不是要學點後端,其實也是可以學,可是學了以後,你打算學得多專精?後端的東西也是會一直更新,一直進步。可能Restful API 也可能不是,DB也有好多種DB, 後端語言也很多種,所以你是想要學個大概,還是是希望,後端也問題的時候,自己可以去看code也看得懂?
前一個專案,公司有一個前端,他就是因為自己做的ticket幾乎都會碰到後端,就乾脆把整個後端也寫一寫,就變成fullstack,雖然他主要還是算前端。但也因為是.NET 所以前端跟後端可能沒有太明顯的分界,至少我相信他本來就會寫.NET了,因為幾乎有一半以上的controller都是他寫的。
如果你是寫react SPA,就是跟後端完全分開,你就只要寫到send http request 那邊的話,那好像也不太需要去了解到後端的架構,就是大概知道後端的endpoint 長什麼樣子就好,他們需要提供的文件就是需要提供。
如果說你是怕以後失業,怕公司可能覺得請全端比較划算,那的確還是多學一點好,反正多學也是投資自己。還能順便展現自己的上進心以及學習能力。
以consultancy來說好了,感覺是什麼都要學,像是公司可能就會說,啊最近我們的客人都要求要會什麼什麼,那你就趕快學一下。當然公司也不是很壞心的就叫你要馬上學會,公司最近也是有開始提供一大堆Training 之類的,還給你錢讓你去考一些證照。
目前我使用的語言主要還是Javascript 和 C#這樣,然後公司有希望我可以好好學學Java。其實也不是不會寫Java,如果有發漏我其他文章的話就知道,其實我最一開始學的時候,第一個語言就是Java。
在台大資訊系統訓練班的時候,我就上了Java和PHP的課程,為自己來英國念研究所做準備,一年的master course也都是Java 跟PHP為主,然後有用了一點Python這樣。可是工作以後就只有使用C#和Javascript 而已,所以說,學校學了也不一定會用到。
很多東西都是工作以後才學的,然後Python是平常自己刷題的時候會用,因為覺得不錯用。
其他的話,我覺得雲端相關的東西滿實用的,像是AWS或Azure 或GCP 有機會的話是可以自己摸摸。我自己是滿幸運的在工作上一直都有用到雲端產品,主要是AWS,前一個專案有用Azure 這樣。
DB的話,就是SQL和NoSQL可以個學一個,應該就滿好用的了,目前最流行的應該就是PostgreSQL和MongoDB 。如果對於Graphic Database有興趣也可以稍微看一下像是Neo4J之類的吧!
前端框架的話,就是React, Angular, Vue.js選一個吧!學會一個以後再去學其他的也不難,這三個我是剛好工作上都有用到,我自己是覺得Vue和React應該是比較好上手的,入門門檻比較低,Angular就一定要寫Typescript.
後端框架的話,看你用什麼語言,Java就學spring boot,
C#就是.NET,JS的話應該是Express,Python就Django,PHP就Laravel 。
Mobile的話我沒有寫過也不知道。
如果是平常想要補充知識的話,可以多念一些像是security 相關的東西,或者是Oauth那類的,也可以看一下架構之類的。像是Microservices, microfrontend, Domain Driven Development 這些概念性的東西。
也可以看一些像是Clean Code相關的書,怎樣重構原本的爛Code或者TDD相關的書。
反正前一篇文章就說了,這個職業就是要一直學,活到老學到老,如果打算做到老的話。
#公司招募看的到底是這個人的什麼
其實每個公司應該都不太相同。有的公司就是要招募他們覺得最聰明的人,所以就是一直問你一些很難的東西。或者就是只要找那種名校出來的人,最好有什麼數學物理奧林匹亞的。
有些公司看的是你的個性,符不符合公司文化,或者同事喜不喜歡你之類的。
有些公司就是很缺人,看你能不能馬上上工之類的。能的話就馬上錄取你之類。但通常那個可能是很雷的缺,例如公司找人找很久都找不到,終於看到一線希望。然後為什麼找不到人,可能是薪水開的偏低,或者公司名聲不好,上Glassdoor就可以查看公司的評價。也可能是職缺本身很雷,例如看起來就是個打雜缺。或者是前人都做不久就離開,所以需要一直找人。
有些公司是看你寫的code 例如看你的code乾不乾淨,可能你寫出來的code都很乾淨,設計也很好,思路也很清晰,他們就會錄取你。
有些公司看的是你有沒有某些特定的經驗,例如公司開那個缺剛好就是要找有AWS經驗的人,所以可能就是會錄取他們覺得AWS經驗比較多的人。或者是剛好想找之前有做過Serverless架構的人,或者是有碰過Kubernetes的人,這個時候真的就是靠經驗了。
也有的公司就是,他們也懶得找人,HR給他們面試的第一個人就會錄取,這個完全靠運氣。這件事情真的發生在我第一間公司的另外一個Team,主管非常不喜歡面試人,也覺得我工作都沒時間還要面試。所以就是隨便問問之類的,然後就跟HR說好。
--------------------------------------
以上就是我目前經歷過以及別人分享給我的經驗。我覺得面試的話,運氣真的也是佔滿大的比例,尤其是遇到像第一間公司那種狀況的。
當然年輕的時候可能會比較急躁,也很擔心自己找不到工作,考量到的還有金錢跟公司名聲,所以學不學得到東西也可能是其次。
選offer的時候,也可能就是可以分析一下,自己想要的到底是什麼,是金錢,是做得開心,還是想要可以做的久(這個也要看公司可以活多久),除了看Glassdoor也可以上網看一下公司財報。
最近的疫情衝擊下,有很多新創或中小企業也開始裁員跟減薪,所以公司平常的財務狀況和經營方針也是很重要的。即使公司可能一直都有收入,也可能因為現金管理問題,導致沒有足夠現金需要裁員。
python時間相減分鐘 在 【こつこつPython】Pythonで時間差の計算をする方法 的推薦與評價

キノクエスト→https://kino-code.com/kq_service_a/?utm_source=youtube.com&utm_medium=referral&utm_campaign=S6ReDRz3cDc_gaiyo_kq_service_a/\ ... ... <看更多>
python時間相減分鐘 在 so-vits-svc/README_zh_CN.md - 4.1-Stable - GitHub 的推薦與評價
带有F0曲线编辑器,角色混合时间轴编辑器的推理端(Onnx模型的用途) : ... 的机器训练,据我的经验在腾讯云6核cpu训练每个speaker需要约4分钟即可完成训练; 执行 python ... ... <看更多>
python時間相減分鐘 在 Python 使用datetime 日期相減 - ShengYu Talk 的推薦與評價
本篇要來介紹如何使用python 的datetime 模組作日期時間相減,並且印出相差的天數。 使用範例以下範例為取得今天的日期,設定要相減的日期時間, ... ... <看更多>