C/C++程式筆記
2013年11月6日 星期三
[面試經驗]訊達電腦
在退伍前的一個月,我開啟了104的履歷;隔不到一天我就收到了面試邀約的信件。對於即將成為新鮮人的我,當然很開心的跟公司安排面試。但因為我是在外島當兵,所以得要一個月後回台灣才能面試。所以這家公司是我的第一次面試。
在收到這家公司的面試邀請時,依照資深鄉民的本能,想當然耳是先Google這家公司的評價、工作內容及薪資水準囉!恩...不太妙..."掌聲響起"的系列文章映入眼簾,但都是好幾年前的文章,而且大部分文章的連結都失效了;所以當時就沒多想,認為這應該都是舊資料了,應該沒那麼有參考價值。
到了面試那天,準時抵達,人資小姐拿了一份考題給我寫。考題內容有程式、資料庫及管理相關的名詞解釋。我幾乎都不會,因為剛退伍,大家都知道,腦袋會非常的不靈光...所以我幾乎不會寫...
寫完之後就跟主管面談,面談的過程滿輕鬆的,感覺主管人也不錯。後來談到工作時數,主管說會比較長,大概到晚上七點半(上班時間是早上九點半)。我覺得這工作時數算是我理想中的時數。再來就談到我希望的待遇,我是開43K,差不多就是碩士剛畢業在台北的行情(約42K~45K),主管就說你剛退伍,沒有經驗,這樣的價碼好像有點高。我微微地笑了一下,沒跟他多說甚麼,他就接著說:"要拿這麼高的薪水,當然就是要跟別人不一樣,要能夠為公司創造同等的價值,這樣才不會對不起付給你薪水的人!"我覺得他說的沒錯,所以就順著她的話說我也這麼認為。主管繼續說:"這樣好了,我們公司有一份內部訓練教材,其中一個章節你回去讀,下一次面試,也就是一個禮拜後,麻煩你做個簡報,讓我們知道你再學習新東西的速度及能力是到甚麼樣的程度。因為你是資工背景,又讀到碩士,我想這對你來說應該不會太難(這章節是講Disk array,RAID的相關介紹)。當然,如果你的價值有到43或45,公司不會虧待你的。"我那時事實上有點開心,因為我的程式能力不強,報告對我來說相對地容易,因此欣然地接受了這一份任務,所以一個禮拜後的晚上七點就到公司進行簡報。
我簡報完之後,主管感覺還算滿意,在聽的過程中頻頻點頭。大概討論了一下我簡報的內容,就說:"不錯!你有43K的能力,但要到45K還需要再努力。"當時我只心想,這是我第一個拿到的Offer,蠻開心的!接著他就說如果有確定要來的話,工作內容就包括要讀這份教材的全部,然後考試要達到70%。之後可以當公司內部的講師及Presale。他也特別說到考試是否通過跟"績效"有關。我當時不以為意,想說沒考過是扣季"獎金"之類的。(進公司一個月後沒考過,主管竟然是要降我的底薪!)
當下主管就問我甚麼時候能夠去上班,我就跟他說要考慮一下。他就滿臉疑惑地說:"有達到你期望的薪資怎麼還要考慮呢?"我就只好跟他說些要先找房子、跟家人討論之類的奇怪理由。接著他就問我:"知道我們的工時吧!?"我就回答說:"上次有說到阿~大概到晚上七點半左右~對吧?"主管只笑笑地回了我"差不多,差不多"。(之後去上班才知道,星期一到四的晚上八點到十點都要開會或上課...主管大概認為這不算加班...) (在我進公司之後,我親耳聽到資深同事跟面試者說上班時間是到七點左右,沒事就可以走了。完全省略每天要上課開會的事實,真的是...)
面試完的兩個禮拜後,其他面試的公司都沒有下文,基於家人的壓力,我就答應了這家公司的Offer了,在我一答應這家公司的Offer之後,當天有三家找我第二次面試...人生啊...當時只想著做人要守信用,就推掉其他公司的二次面試了。
上班之後就是過著幾乎每天都十點才從公司離開的悲慘日子...請參考:[工作經驗]訊X電腦
2013年11月5日 星期二
[工作經驗]訊達電腦
(11/06補充:扣薪水的部分主管後來說再給我一個月的時間,又考不過的話再扣。所以我在被扣薪水之前就趕快閃人了...)
到訊X工作剛滿兩個月,前幾天毅然決然的辭職,因為工作習慣及理念跟主管實在是相差太多...
我是在軟體研發部門,擔任研發工程師的職位,工作內容正常來講是寫公司內部系統的程式。但因為主管說我是碩士學歷,學校又不錯,因此希望除了寫程式之外,能夠培訓我在公司擔任講師及Presale。而這兩樣任務需要考試,考的內容是某大廠的教材,講的大概是server或PC的組成架構,包含了Memory、CPU、Bus、Disk、Networking、Backup、Chipset等等總共16章的內容(全英文,約300多頁);對於這樣的安排,我當時只覺得這應該很正常;而且指派這麼多的任務給我,應該表示對我有所期待,我應該更努力達到才行。
進去的第一個禮拜,除了禮拜五是晚上七點左右(正常上下班時間是早上九點半到晚上六點半)離開公司,其他四天都是晚上十點過後才離開公司。禮拜一跟四是因為部門內部要上課(晚上七點半到九點半),禮拜二是要去聽公司各主管開會(晚上八點到十點),禮拜三則是有與管理相關的課程(晚上八點到十點)。可能會有人認為這樣可以學到很多東西或者是這樣很充實,不過對我來說實在是太多天了...
第二個禮拜主管就跟我說因為要讓我準備Presale及講師的考試(公司內部的考試),所以我可以不用參與禮拜一、二、三個課程或會議,要我自己在辦公室裡面看書。因此每天晚上,除了禮拜五,我就一個人留在辦公室裡面看書。有次上班時間,因為要讀的考試內容的進度有點落後,而且這也是工作內容需要,就想說先看一點考試的內容。後來被主管看到我在念考試的東西,就跟我說:"上班時間還是以寫程式為主喔,考試的部分應該是要利用你下班的時間看喔!" 我當時有點傻住...到底考試應該算工作內容還是我自身的事情?後來也只好認了,之後就上班時間寫程式,下班時間才看書。
過沒多久有一個專案,是要去客戶那邊做簡報,demo我們的產品,因此要簡報的前一天,每位較資深的同仁都忙到十一、十二點多;我大約在八點多時問其他同仁是否有需要幫忙的,但因為我進去沒多久,而此專案也進行有段時間了,他們就跟我說沒辦法幫上忙。因此我就先回家看書休息了。隔天主管問我說:"為什麼昨天那麼早離開呢?大家都在忙,你應該要留下來幫忙啊!" 我回答:"我有先問其他人是否需要幫忙,但他們都說我沒辦法幫上忙。" 接著主管就說:"就算沒辦法幫忙,我們是一個team,也應該要留下來精神支持一下啊~!你也可以在這邊看書阿!下次要記得喔~"
進公司一個月左右,就是要考試的時候了。雖然考了兩次的模擬考(每次50題,半小時),但370多題的題目要在三小時左右寫完(單選題、選擇題、是非題)。而對於我來說,要背大量的東西實在是我的弱點。想當然爾,兩次模擬考都對不到一半,正式考試只對了差不多三分之一(通過是要答對70%)。
隔天主管就找我談話,說要降我的月薪。而且降5000!我聽到時差點傻掉...因為主管在我進來時,每個禮拜大概都會提醒我兩次說:"這考試跟你的[績效]有關喔!"。當時我以為是獎金之類的,結果竟然是月薪...我只好回說,這樣我在台北生活不下去,只能辭職了。主管就說:"那你覺得扣多少可以接受?總不可能都不扣吧?這樣對其他同事都不公平,因為你的薪水比他們高,但額外的任務沒有完成,如果不降的話對他們都不公平。"因為這太突然了,我只好隨便跟他喊個3000
...然後他就開始說他以前剛就業的努力及心路歷程。接著就說:"這樣好了,給你一個favor,這個月先不扣,在一個月沒考過先扣1000,在沒考過扣2000。"當下我也只能答應了...當下我真的感覺被羞辱了...我覺得我好像乞丐,需要他給的"favor"...
接下來我一樣過著上班寫程式,下班讀書的日子。有一天,想說回家讀書,因為實在很不習慣在辦公室讀書;所以我晚上八點就回家了。隔天主管又找我談話了:"你昨天怎麼那麼早回家?讓你有不用去上課、開會的特權是要讓你留下來念書耶!不是讓你跑回家休息喔!"我說:"我是回家看書阿,因為我習慣在家看書。" 接著主管說:"在辦公室看書跟在家看書應該不會差多少吧?你留下來我們才看得到你在念書啊,這樣人家才會認為你有在認真、努力,這樣知道嗎?記得喔!你不用上課、開會是要留下來看書喔!"接著我就不打算跟他多說甚麼了...
以上對話詭異的地方是:大家都去開會、上課了,辦公室只剩我一個人,誰看的到我在念書?就算看我打卡時間,怎麼能夠保證我一定是在念書,而不是在摸魚?意義在哪裡?沒有事情也要我留在辦公室,就算是要回家看考試的書也會有意見,為什麼?那是不是以後不用考試或開會的話,我是不是也要留到晚上十點?
總結來說,如果今天要趕專案,我可以而且非常願意加班來達到目標,但是沒理由的要我留下來加班?很抱歉,做不到。再來,調降底薪是否合法,我心存懷疑...(查了一下,應該是不能調,但特殊狀況要特殊處理)。最後,公司要求的任務及工作內容為什麼不能在上班時間執行?例如公司內部的考試是否得要用自己的下班時間準備?
要進這家公司真的要考慮一下,在我進去之前,最菜的同仁年資是四個月。在他進公司到我進公司的這四個月內,已經走了差不多兩到三個人(同個部門)...
那可能會有人說:面試的時候都沒有說道以上這些情況嗎?當然是有說囉,只是會有"誤差"。這誤差是故意還是無意,就帶我有空時再來寫寫我面試的情況。
還好我辭職了!YA!
2011年3月9日 星期三
C/C++:計算指定資料夾的檔案數
int count_file_num_in_a_folder( char* target_folder ){ int count=-1; //檔案的counter char szDir[128]; //要讀取的資料夾的位址。 WIN32_FIND_DATA FileData; //指著目前讀取到的File的指標。 HANDLE hList; //指著要讀取的資料夾的指標。 sprintf(szDir, "%s\\*",target_folder ); if ( (hList = FindFirstFile(szDir, &FileData))==INVALID_HANDLE_VALUE ) cout<<"No directories be found."<<endl<<endl; else { while (1) { if (!FindNextFile(hList, &FileData)) { if (GetLastError() == ERROR_NO_MORE_FILES) break; } count++; } } FindClose(hList); return count; }用途:
計算指定資料夾裡的檔案個數。
用法:
/*
char folder_adderss[128]="..\\testing_folder\\";
//testing_folder為指定資料夾的名稱
count_file_num_in_a_folder(folder_address);
*/
附註:
若testing_folder裡面有5個資料夾、3個檔案,則此函式會回傳5+3=8。而count會設成"-1"是因為FindFirstFile"會將[上層目錄]也是為檔案,因此若不想將[上層目錄]也視為檔案的話記得要將count設成"-1";否則,則設為0。
C++:Delete 各種型別的Array (函式) ( delete 的應用 )
void delete_2D_int_array( int **arr , int x ){ for(int i = 0 ; i< x ; i++){ delete [] arr[i]; } delete [] arr; }用途:
Delete一個2維整數型別的Array。
用法:
arr為要刪掉的二維Array的指標,x代表此Array的長。
/*
int **arr = create_2Darray_int ( 4 , 5 ); //回傳一個指向4*5陣列的指標
arr[1][2]=1; //用法同一般陣列
delete_2D_int_array(arr,4); //arr這個矩陣的空間已經釋放了
*/
附註:
也可以將int變成double、float等資料型別。記得要搭配上一篇( C++:Create 各種型別的Array (函數) ( new 的應用 ) ) 使用->有Create出來的Array記得用完之後要用此函式將其空間釋放!
C++:Create 各種型別的Array (函式) ( new 的應用 )
int** create_2Darray_int(int x, int y){ int **array2D=new int* [x]; for ( int i = 0 ; i < x ; i++ ){ array2D[i]=new int[y]; for ( int j=0 ; j<y ; j++ ){ array2D[i][j]=0; } } return array2D; };用途:
Create一個2維整數型別的Array。
用法:
x、y代表此Array的長寬,回傳指向一個內部資料為0的2維陣列的指標。
/*
int **arr = create_2Darray_int ( 4 , 5 ); //回傳一個指向4*5陣列的指標
arr[1][2]=1; //用法同一般陣列
*/
附註:
也可以將int變成double、float等資料型別。如果要宣告很多個陣列時,這個函數就很方便了!Array使用完後,記得要將空間釋放出來,請搭配下一篇( C++:Delete 各種型別的Array (函式) ( delete 的應用 ) )
2011年1月27日 星期四
C/C++:FILE * fopen ( const char * filename, const char * mode )
"r" | Open a file for reading. The file must exist. |
"w" | Create an empty file for writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file. |
"a" | Append to a file. Writing operations append data at the end of the file. The file is created if it does not exist. |
"r+" | Open a file for update both reading and writing. The file must exist. |
"w+" | Create an empty file for both reading and writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file. |
"a+" | Open a file for reading and appending. All writing operations are performed at the end of the file, protecting the previous content to be overwritten. You can reposition (fseek, rewind) the internal pointer to anywhere in the file for reading, but writing operations will move it back to the end of file. The file is created if it does not exist. |
2011年1月23日 星期日
訂閱:
文章 (Atom)