記一次面試經歷


       今早七點半的巴士從中山趕到廣州面試PHP開發助理,以前面的都是十來人、幾十人的小公司,不少還是培訓公司,坑的一逼!這次的公司不錯,比較正規,好歹上百人了,只是筆試題做得一般,題目有的雖有學過,但忘了,好吧!這就是沒准備充分的緣故!下面羅列下我還記得的題目(有些漏了就沒辦法了),之后hr面試聊了下,雖然技術問的不多,感覺自己回答的不好,言語比較少,不善言談,硬傷啊!:

四道選擇題

1、表達式轉換成逆波蘭表達式(以下是百度結果)

       所謂的逆波蘭表示法(Reverse Polish notation,RPN,或逆波蘭記法),是一種數學表達式方式,在逆波蘭記法中,所有操作符置於操作數的后面,因此也被稱為后綴表示法。逆波蘭記法不需要括號來標識操作符的優先級。(摘自維基)
  舉個簡單的例子,平常我們寫的數學表達式a+b,就是一種中綴表達式,寫成后綴表達式就是ab+。再舉一個復雜的例子,中綴表達式(a+b)*c-(a+b)/e的逆波蘭式是ab+c*ab+e/-。

2、二分法找值

3、PHP中的自動加載的方法

function __autoload($className){}

4、一道情景描述題,具體忘了

接下來基本是簡答題

1、PHP中傳值與傳引用的區別,以及各自適用的場景

2、array+array 與 array_merge() 的區別(以下是百度結果)

區別如下:
當下標為數值時,array_merge()不會覆蓋掉原來的值,但array+array合並數組則會把最先出現的值作為最終結果返回,而把后面的數組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋)。
當下標為字符時,array+array仍然把最先出現的值作為最終結果返回,而把后面的數組擁有相同鍵名的那些值“拋棄”掉,但array_merge()此時會覆蓋掉前面相同鍵名的值。

3、什么是設計模式?怎么理解工廠模式?

4、棧和堆的區別?

5、什么是內聚與耦合?OOP編程需要的內聚與耦合的關系如何?

6、用 sql 語句創建一個登錄日志表,要求出現主鍵、索引、數據庫引擎。在插入登錄時間前要將時間轉為dateTime,使用觸發器來實現此功能。最后描述下mysql主從需要注意的問題或使用觸發器與定時器需要注意的問題?

7、邏輯題

有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時后就會死亡,至少要多少只小白鼠才能在24小時時鑒別出那瓶水有毒?

以下是百度后牛客網一位牛人的解釋,答案是(10)2^10=1024

每個老鼠只有死或活2種狀態,因此每個老鼠可以看作一個bit,取0或1
N個老鼠可以看作N個bit,可以表達2^N種狀態(其中第i個狀態代表第i個瓶子有毒)
例如:當N=2時,可以表達4種狀態
0,0( 一號老鼠活,二號老鼠活)
0,1( 一號老鼠活,二號老鼠死)
1,0( 一號老鼠死,二號老鼠活)
1,1( 一號老鼠死,二號老鼠死)
具體來說,有A、B、C、D這4個瓶子,一號老鼠喝A和B, 二號老鼠喝B和C
如果 0,0 ( 一號老鼠活,二號老鼠活),說明是D有毒,第0個狀態代表第4個瓶子有毒
如果 0,1 ( 一號老鼠活,二號老鼠死) ,說明是C有毒 ,第1個狀態代表第3個瓶子有毒
如果 1,0 ( 一號老鼠死,二號老鼠活) ,說明是A有毒 ,第2個狀態代表第1個瓶子有毒
如果 1,1 ( 一號老鼠死,二號老鼠死) ,說明是B有毒 ,第3個狀態代表第2個瓶子有毒


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: