2014年3月30日 星期日

旗標變數,以改左引號為例

#include


int main()
{
  int c,q=1;

  while((c= getchar()) != EOF)
  {
   if( c == ' " ' ) //當字串中出現 " 執行下列區塊

     {
      printf("%s", q ?  " `` " : " '' " ) ;// a?b:c 若a為真則執行b,否則執行c,判斷式中非0值都為真

      //出現錯誤....只要雙引號" "內的字不是ASCII碼,
      //就會出現erro stray '\161'
      q = !q; //改變q的改輯值,真就變假,假就變真
     }

   else printf("%c", c);
  }

}

q=!q 就是所喂的旗標變數(flag)中最簡單的一種

用來決定 開、關,是、否 等二元選擇時,可以使用的方法

2014年3月29日 星期六

C _M取N

#include
#include
int factorial(int n)
{
  int i,m=1;
  for(i=1;i<=n;i++)//發生錯誤,把;打成,
 
      m*=i;
 
  return m;
}

int main(int argc, char *argv[])
{ int n,m,c=0;
  scanf("%d%d", &m, &n);
  //即使%d%d 使用者在輸入時,仍需有空格(廢話,不然怎麼知道換數字了沒)
  c=factorial(n)/(factorial(m)*factorial(n-m));
  //發生錯誤,拼字錯誤,考慮減短變數名稱長度
  printf("%d\n", c);
  system("PAUSE");
  return 0;
}
//給予factorial  的值時,不論n或m都很容易超出整數值上限,
//即使如此,程式仍然能跑出值來, 大部份的情況會跑成 負的整數,特別是 "-1"

反轉字串

#include
#include
#include
int length(char *s)
{   int i;
    for (i=0;*s;i++)s++;
    return i;
}

void revers(char *s)
{
    int i;
    for(i=length(s)-1;i>=0;i--)
    printf("%c",s[i]);  
}
int main(int argc, char *argv[])
{
  char string[50];
  while(scanf("%s",string)!=NULL)
  {  
      revers(string);
      printf("\n");
  }
  system("PAUSE");
  return 0;
}

2014年3月28日 星期五

3n+1 and !和

#include
#include

int main(int argc, char *argv[])
{
  int i,j,n,x=0;

 scanf("%d",&n);
     for(i=1 ; i<=n; i++)
     { int f = 1;
       for(j=1;j<=i;j++ )
     
        f*=j;
        x+=f;
       }    
   
  printf("%d",x%1000000) ;
  system("PAUSE");
  return 0;
}
====================================
#include
#include

int main(int argc, char *argv[])
{
  int i,j,n,x=0;
 
 scanf("%d",&n);
     for(i=1 ; i<=n; i++)
     { int f = 1;
       for(j=1;j<=i;j++ )
       
        f*=j;
        x+=f;
       }     
     
  printf("%d",x%1000000) ;
  system("PAUSE");
  return 0;
}

2014年3月22日 星期六

隨筆20140322

快畢業了,喜憂混雜,

開心的當然是努力四年終算要有個結果了,

擔心的是怕找不到好工作,甚至更慘的是,怕畢不了業.

什麼是好工作呢?

對我而言稍微有點發展性,可以拿高薪就是了

高薪又是一個比較用語

其實說到底,我要的不是高薪,而是比週遭的人高薪

因為這樣我強烈的自卑感才得以掩飾

至於畢業..............五大主科真的有點吃重,

得榨出更多時間來看書了.....





2014年3月18日 星期二

速成心態

在台灣的我,很習慣於花少少的時間,

達到大大的功效。考試前我抱佛腳、

找工作前把履歷趕一趕、

比賽前最後一刻花個三天三夜集訓,

然後,事情結束了,結果總是還不錯

考的也還不差,面試也自我感覺良好,

比賽呢?反正評審口味不一,我也管不了。

於是我用這種心態繼續混日子,

總覺得什麼東西只要靠我幾個禮拜,

最多一個月的時間努力,一定有成果。

很多學弟妹覺得:

我已經花一個週末整整四十八小時的時間修改我的履歷了!

為什麼還不夠好?

我已經花一個月的時間每天申請實習了,

為什麼一點成效都沒有?

我已經在接到面試通知時立馬開始準備,

緊鑼密鼓的練習一個禮拜,為什麼程度還不夠?

我這個考試已經唸了兩個週末了,應該已經沒問題了吧!

我們都以為,一個週末,一個禮拜,一個月,就夠了。

但你知道嗎,

這種付出的程度真的微不足道到了極點。

我到美國才發現,

這裡的學生看待自己的時間的態度不一樣,

在求職方面尤其明顯。

他們的單位不是幾天、幾個禮拜、而是幾『年』。

我看到無數個大二學生早早在開學前就把履歷寫好

(是他們花了好幾個禮拜寫出來的第一版),

規劃自己大二這學年需要做什麼研究、

培養什麼面試技能

(是的,面對大三下的徵才潮,

大二上的他們已經開始準備了!)

、大二暑假到大三上時已經開始進行緊鑼密鼓的面試練習,


並且開始針對大四畢業以後想進的公司,

開始找資源,接觸學長姊。

你有沒有發現,針對每一步,他們的時間單位很長,

而不是像我們一樣,一個週末就覺得很了不起?

這裡的學生真的很流行那個『一萬個小時法則』:

意思是,如果你要擅長某件事物,

你必須要付出至少一萬個小時。



再說一個我室友的例子。她來自中國,高中就來美念書,

我見到她的時候,她offer拿不完:

大到紐約高盛的投資銀行部門,

小至LA極少數幾家菁英投資銀行,

她全部都上,這些銀行還天天打電話給她,

遊說她選擇他們公司。她英文嚇嚇叫,

長得又漂亮身材又火辣,人緣極佳,

朋友遍佈世界各國。

噢,成績還頂尖,是

他們那屆四年來全A女王

(數學雙財金系!這可不是混著玩的),

閒暇之餘還跟教授做經濟研究,

名字還被寫到paper上。

外人看來,簡直是超級人生勝利組。

但是,讓我們拾起酸民的心態,

看看人家怎麼努力的。

面對課業她不馬虎,

從大一開始她就每天複習預習,

因為英文還不夠好,

她經常花別人雙倍的時間寫作業。

找工作她更是刻苦:

她沒有一帆風順,相反的,在大三大四這兩年,

她一點結果都沒有。


儘管已經每天練習面試了、已經每天積極的聯繫學長姊了、

已經把所有該準備的都準備了,含辛茹苦一年半載,


大四那年她只拿到了一個不怎麼滿意的offer。

於是她咬著牙,放棄那個工作機會,決定延畢一年繼續努力。

她從頭開始找實習,繼續用超乎常人的意志力走下去。

半年以後的最後一刻,

她終於拿到了一個頂尖投資銀行的實習,

在實習的過程中她積極表現,


實習結束時,無數間投行都要她。

兩年來,她經歷了無數失敗與挫折,她跟我說,

曾經有很長的一段時間她每天都躲到廁所哭。

但是哭完還是得若無其事的繼續找工作、念書、寫paper,

強迫自己微笑的面對下一個挑戰。

為了找工作,她寄出了一千多封email

(真的,她打開她的信箱算給我看過),

打過幾百通電話,面試無數次。在這麼多努力的過程中,


她拿到了五個頂尖的offer。

你想想,兩年寒窗,她的成功機率是一千分之五!


而你還覺得面試練習一個禮拜就可以進入麥肯錫。


當然,你覺得我舉的例子太極端了。

你覺得你身邊有很多人生勝利組,

真的就是練習面試一個禮拜就拿到了年薪百萬的offer。

你覺得很不公平,

你覺得這是資源、體制、社會的問題。

你覺得就是有很多人事物都對不起你。

但你不知道的是這些人生勝利組的努力。

他們是不是上課比你認真?

當你在恍神想著等一下要吃什麼的時候,

他們是不是已經專心的寫下筆記?

當你不求甚解,上課用facebook的時候,

他們是不是正努力的理解所學內容,

在腦海裡轉了好幾圈?

他們是不是想做什麼就去做什麼,

而不是像你,只會嘴上說說?

他們時不是平時就積極參與社團、做project,

培養專業能力?當你努力一個月就想放棄,

他們是不是還意志堅定的往前走?

還有,他們是不是執行的時間多,

抱怨的時間少?

世界上真的沒有速成這件事。

你所嫉妒的人生勝利組,

他們一夜之間的成功,

都是靠平時一點一滴累積下來的。

人生勝利組還有幾個共同特徵:他們願意捲起袖子去做、

他們願意思考、 他們不隨意妥協,

他們不會努力兩個月以後就放棄、

他們失敗時不會從此縮回自己的小確幸迴圈,

而是哭完以後,繼續走。



我大陸同學的好幾個朋友考上了常春藤名校的PHD,

他們從大二就開始跟教授做研究,為了三年後的申請做努力。

我同班的安德魯,拿到了麥肯錫、BCG還有Bain的offer,

他從大二開始練習個案面試到大四。

同校的學弟妹在大二上就開始找實習,

並且研讀投資銀行面試指南,

為的是大三暑假可以進入top投資銀行的summer program。

無數的同學們,用的是至少兩年、三年的時間為求職做努力。

而我們總是習慣抱佛腳一個禮拜就看到成效。

我們身邊,也有眾多自學寫程式、

自學設計、上語言補習班、花時間培養各種技能的人。

他們在你看youtube影片傻笑的時候,增進自己的能力。

然後一萬、兩萬個小時過後,他們終於得到了收穫。


而你就在那邊酸,說他們資源比較多,

說他們爸媽比較有錢,說他們生來就比較聰明,

學東西對他們來說就是輕而易舉。

不要再自己騙自己了,

你跟人家的差別,

就是那個該改掉的速成心態、

就是那個懶惰的態度、就是那個逃避現實的習慣。

引用一句學長曾跟我說的話:

「大家都渴望的東西,如果你沒有壓倒性的能力與勝算,

你只能用壓倒性的努力去取爭。」

大家都渴望的好工作、好薪水、

好生活…是不可能有捷徑的。

套一句我神人室友經常鼓勵我的話:

『Fiona,I worked my ass off for two years!

如果你努力??月就拿到最好的offer,那我不就傻逼了??!』



所以,給自己一個功課:拋開『速成』

思維,用一萬個小時,換來你想要的門票。



程式設計師面試必讀

本文作者@ guitardave24 ">David Byttow是一名程式設計師,
曾在Google和Square等公司工作過。
在正文之前,先讓我們回答幾個簡單的問題:

第一,你面試過多少家公司;
第二,這些公司中,錄取你的有多少?
記下這兩個數字,然後代入下面這個算式中
(為我自己發明,僅供參考,不具有其他意義):

x = number of companies interviewed with onsite //問題一的數字
y = number of offers received //問題二的數字
value = 100 * log(x) * y / x //最終結果

如果你算出的結果<90 p="">如果你所得的分數>120,那你比較強大,
不需要這個,但我建議你不妨看看,權當參考。
首先做個自我介紹:

我沒有本科文憑。十二年前,那時我19 歲,隻身從芝加哥去往南加州,
所有的財產不過一部車和兜里的400 美金,還有車裡裝的別的東西。

但是,當時我已經達到專業級的程式水平,
而且,揣在兜里的還有一份年薪40000 美金的合同。

從那以後,我先後在Double Helix、Namco Bandai、
Google、Obvious 和Square 工作過,

同時還收到過諸如Naughty Dog、Activision、Riot、Games、
Blizzard、Pinterest、Goldman Sachs 以及更多這類公司的橄欖枝。

把這些經歷代入本文開頭的算式中後,我的得分為132。
在我的職業生涯中,我面試過超過500 名程式設計師,
錄取了其中超過10%的人。
並且,至少有15 人在圈子里相當出名,我至今還記得他們。

現在,我給自己幹,想要做點不一樣的東西。

羅列上述經歷的目的在於,
我想用我的親身經歷告訴這個行業的職場新人,
沒有所謂的面試寶典能讓你百分百簽到自己想要的工作,
以Google 為例,

他們的面試流程中到處都是變數,
首先,你的面試官團隊是由隨機抽取的5-7 名軟件工程師臨時組成,
接著,他們會商量著給出一套適當的題目讓你回答,
通常有一道題是關於徒手寫程式的。
偶爾會有個別惡趣味的面試官會進行一些刁難,
但這些面試官通常都是這個小組中的大牛,
並且,面試中是允許你犯個別錯誤的。

但這也不是說面試就是純粹碰運氣,雖
然幫助有限,但我還是想給出一些很有用的小技巧,
讓你有更充分的準備,減少在面試中的慌亂。


技術方面的技巧

第一:ABC(Always Be Coding)。 一力降十惠,
說的多不如做的多,所有工作都是這樣,程式也不例外。
你寫過的程式越多,你的能力也就越高。
但是,你必須做到有目的的程式,
在寫程式之前做到心中有數,明白自己的短板並且加強訓練,

堅持不懈的挑戰自己的極限,努力使自己在各方面都很優秀。
我強烈建議你把自己做過的每個項目——不管是否完成——都整理成作品集,
在這裡推薦GitHub,非常專業的程式分享社區,你可以把自己的作品集放到這。

第二:精通至少一種多重範式程式語言。
精通一門諸如C++這樣的語言能讓你從根本上理解程式,
因為這類語言風格多樣,如何寫程式完全取決於你自己的風格,
你能在一種語言裡體會到不同風格的程式在執行上的差別,
同時要達到這樣的水平還需要大量的實戰與練習。
而且這類語言通常在各個社區中也是最活躍的板塊,
你可以很容易就找到志同道合的朋友來分享經驗。
其他也支持多風格程式的語言還有C#、Java、PHP、Python及Ruby。

關於C++ 的題外話:有一個跟著名的面試題,許多面試官都喜歡問,
是這樣:“如果把C++ 分為十個等級,
1 為最低,10 為最高,你認為你自己處在哪一級?”
希望上帝保佑那些回答9 或者10 的
Bjarne Stroustrup 估計也只會給自己打到8 分甚至更低
(此人為C++ 之父)。
主要原因是這個語言經過這麼多年無數大能的不懈努力,
已經超級複雜,被稱為主流設計語言中最複雜的一款也不為過。

第三:熟悉各種算法的優劣。
先看看這份關於各種算法的對比圖,
確定都理解了之後,試著把這些算法都用自己的方式寫一遍。
這樣你就會對各種算法有更深刻的理解。
面試的時候這幾乎是必考題哦。

第四:熟悉所有常用函數。
你最好把所有的常用函數都用自己使用的語言寫一遍,
不要依賴於現成的函數
這樣會加深你對各個函數以及語言本身的理解。

試著快速寫出下列函數:

向量(動態數組)、鍊錶、堆棧、隊列、
哈希映射、集合、優先級隊列等等。

第五:要更務實。 臨時抱佛腳早就沒有用了,
踏踏實實的打好基本功才是王
花更多的時間去解決各種程式中遇到的問題,
這裡推薦多去TopCoder看看,

那裡有很多不錯的資源。裡邊有各種案例可供學
試著學習裡邊的思考方式來解決自己遇到的問題。
我當初花了整整兩個禮拜在TopCoder上,
到最後我都能閉著眼一隻手寫出迪科斯徹算法,
幾乎能解決所有的圖形問題。
所做的不過是不斷重複程式。
這可能是Google最終要我的原因之一吧。
Eric Schmidt說:“重複從不青睞祈禱者。”

第六:程式是最簡單的。
這麼多年的工作經驗使我明白了一條,
寫程式是一個工程師所有工作中最簡單明確的一部分。
我常掛在嘴邊的一句話是:
“簡單的就像寫段程式一樣。
”我相信對於一個工程師來講,事前準備和事後維護才是更艱難的工作。

比如說,你需要在程式前計劃好你需要寫什麼以及確保寫好的程式能順利運行。
盡量讓面試官知道,你不是一個只懂寫程式的呆子。

需要注意地是,在別人面前寫程式可能會略為彆扭,
最好提前做些這方面的練習,
可以參考下我前任同事Dan寫的這篇《Whiteboarding》。
非技術方面的技巧 需要提前說明的是我在這方面並不專業,僅供參考而已。
第一:明白你為什麼選擇這個公司這分工作。
不管大公司還是小公司,還是極度飢渴的創業公司,
都不會要一個連公司是乾嘛的都不知道的人,哪怕這個人技術牛到一塌糊塗也不行。

第二:一定要滿懷激情。
程序猿是一種沒有固定工作時間的動物,
如果你只是想找一份朝九晚五、有固定工資、
只在偶爾加加班的工作,你還是別乾這行的好,
你一定要愛程式,不管什麼時間什麼地點
,只要有需要,就能隨時投入工作。
愛一行,乾一行,對於程式設計師來說尤其如此。

第三:不懂就問。
面試的時候如果碰到沒有聽明白的問題,
一定不要不懂裝懂,
我曾經見過有些面試的人花了老牛鼻子的勁去解決根本沒問過的問題,
這不只是浪費你的時間,也是浪費我的時間。

第四:保持微笑。 所有面試寶典上都有這條,但是,不要做太過了,
適當的微笑能產生很大的效果。我有時候會在面試完一個人後特別受打擊,
但是下一個面試者簡單而真誠的微笑能讓我一下子心情好起來。
我把我所有能想到的都寫在這裡,希望能對大家有所幫助。
還是開頭那句話,沒有保證百分百成功的面試寶典,
只有不斷的努力,要想干好這份工作,堅持ABC 吧,少年。