1. 禁用COOKIE 後 SEESION 還能用嗎?javascript 2. 抓取遠程圖片到本地,你會用什麼函數?php 4. 你以爲在pV10W的時候, 同等配置下,LUNIX 比WIN快多少?css 5. 簡述pOST 和GET傳輸的最大容量分別是多少?html 6. 用最少的代碼寫一個求3值最大值的函數.java |
|
回覆 2 樓 2015-01-26mysql 如下是部分答案(不保證是正確的解)linux 1. 不能程序員 2 fsockopenweb 4 (不作優化的狀況下同樣)面試 5 2MB,1024B 6 function($a,$b,$c){ return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b : $c ); } ———————————————————————————– 大公司的pHp面試題 2. 求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數 $begin=strtotime(‘2007-2-5′); $end=strtotime(‘2007-3-6′); echo ($end-$begin)/(24*3600); 3. 請寫一個函數,實現如下功能: 字符串「open_door」 轉換成 「OpenDoor」、」make_by_id」 轉換成 」MakeById」。 function str_change($str) { $str = str_replace ( 「_」, 」 「, $str ); $str = ucwords ( $str ); $str = str_replace ( 」 「, 「」, $str ); return $str; } 4. 要求寫一段程序,實現如下數組$arr1轉換成數組$arr2: $arr1 = array ( ‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ), ‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ), ‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ), ‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ), ‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ ) ); $arr2 = array ( ‘0′ => array ( ‘0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′), ‘1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′), ‘2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′), ‘3′ => array ( ‘tid’ => 7, ‘name’ => ‘Name4′) ), ‘1′ => array ( ‘0′ => array ( ‘tid’ => 9, ‘name’ => ‘Name5′ ) ) ); $arr1 = array ( ‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ), ‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ), ‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ), ‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ), ‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ ) ); function changeArrayStyle($arr){ foreach($arr as $key=>$value){ $result[$value[\fid\]][]=$value; } return array_values($result); } $arr2=changeArrayStyle($arr1); echo 「 」; var_dump($arr2); ?> 5. 請簡述數據庫設計的範式及應用。 通常第3範式就足以,用於表結構的優化,這樣作既能夠避免應用程序過於複雜同時也避免了SQL語句過於龐大所形成系統效率低下。 ANSWER: 第一範式:若關係模式R的每個屬性是不可再分解的,再屬於第一範式。 第二範式:若R屬於第一範式,且全部的非碼屬性都徹底函數依賴於碼屬性,則爲第二範式。 第三範式:若R屬於第二範式,且全部的非碼屬性沒有一個是傳遞函數依賴於候選碼,則屬於第三範式。 6.一個表中的Id有多個記錄,把全部這個id的記錄查出來,並顯示共有多少條記錄數,用SQL語句及視圖、存儲過程分別實現。 存儲過程: DELIMITER // create procedure proc_countNum(in columnId int,out rowsNo int) begin select count(*) into rowsNo from member where member_id=columnId; end call proc_countNum(1,@no); select @no; 視圖: create view v_countNum as select member_id,count(*) as countNum from member group by member_id select countNum from v_countNum where member_id=1 7 表中有A B C三列,用SQL語句實現:當A列大於B列時選擇A列不然選擇B列,當B列大於C列時選擇B列不然選擇C列。 select case when first_name>middle_name then case when first_name>last_name then first_name else last_name end else case when middle_name>last_name then middle_name else last_name end end as name from member 8請簡述項目中優化sql語句執行效率的方法,從哪些方面,sql語句性能如何分析? sql優化有鳥用,不如直接加索引。 9 若是模板是用smarty模板。怎樣用section語句來顯示一個名爲$data的數組。好比: $data = array( [0] => array( [id]=8 [name]=’name1′) [1] => array( [id]=10 [name]=’name2′) [2] => array( [id]=15 [name]=’name3′) …… ) 寫出在模板頁的代碼? 若用foreach語句又要怎樣顯示呢? {section name=loop loop=$data} {$data[loop].id} {$data[loop].name} {/section} {foreach from=$data item=id key=k} {$k} – {$id} {/foreach} 10 寫一個函數,可以遍歷一個文件夾下的全部文件和子文件夾。(目錄操做) $d = dir(dirname(__file__)); //echo 「Handle: 」 . $d->handle . 「\\n」; //echo 「path: 」 . $d->path . 「\\n」; while ( false !== ($entry = $d->read ()) ) { echo $entry . 「」; } $d->close (); ?> 11 兩張表 city表和province表。分別爲城市與省份的關係表。 city: id City provinceid 1 廣州 1 2 深圳 1 3 惠州 1 4 長沙 2 5 武漢 3 ………. 廣州 province: id province 1 廣東 2 湖南 3 湖北 ………. (1) 寫一條sql語句關係兩個表,實現:顯示城市的基本信息。? (2) 顯示字段:城市id ,城市名, 所屬省份 。 如: Id(城市id) Cityname(城市名) privence(所屬省份) 。。。。。。。。。 。。。。。。。。。 (2)若是要統計每一個省份有多少個城市,請用group by 查詢出來。? 顯示字段:省份id ,省份名,包含多少個城市。 ANSWER: 1.select A.id,A.Cityname,B.province from city A,province B where A.provinceid=B.id 2.select B.id,B.province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id 12. 按照你的經驗請簡述軟件工程進行軟件開發的步驟。如下工具Rational Rose、powerDesigner、project、VSS或CVS、TestDirector使用過那種,有缺點是什麼? 公司用dbdesigner及cvs,測試管理工具用的是Mantis 13. 請簡述操做系統的線程與進程的區別。列舉LINUX下面你使用過的軟件? 14. 請使用僞語言結合數據結構冒泡排序法對如下一組數據進行排序 10 2 36 14 10 25 23 85 99 45。 $a = array(10,2,36,14,10,25,23,85,99,45); for($j=0 ; $j<9 ; $j++) for($i=0 ; $i<9-$j ; $i++) if($a[$i] > $a[$i+1]) { $t = $a[$i] ; $a[$i] = $a[$i+1] ; $a[$i+1] = $t ; } echo var_dump($a); —————————————————————————– —————————————————————————– —————————————————————————– 新浪php工程師面試題 收藏 一、COOKIE、SESSION的聯繫和區別,多臺web服務器如何共享SESSION? 二、HTTp協議中的pOST和GET有何區別? 三、一段php代碼,寫出輸出結果: /**** 這個程序****/ $a=0; $b=0; if(($a=3)>0||($b=3)>0){ $a++; $b++; echo $a ; echo $b; //輸出b的值 ($a=4 ,$b=1) $b=3沒有執行 } 四、reqiure的include均可包含文件,兩者的區別何在? 五、php中WEB上傳文件的原理是什麼,如何限制上傳文件的大小? is_uploaded_file() 和 move_uploaded_file() 六、寫一個函數,能夠遍歷文件夾下的全部文件和文件夾. 七、八、中間有幾個unix shell的題目(好像是兩個),由於不懂,不記得這些題目了 九、有mail.log的一個文檔,內容爲若干郵件地址,其中用’\\n’將郵件地址分隔。要求從中挑選出sina.com的郵件地址(包括從文件讀取、過濾到列印出來)。 mail.log內容以下: james@sina.com.cn jack@163.com zhansan@sohu.com lisi@hotmail.com wangwu@gmail.com 十、js中網頁前進和後退的代碼 ( 前進: history.forward();=history.go(1); 後退: history.back();=history.go(-1); ) 十一、window(A)中用window.open()打開了window(B),如何從窗口B調用窗口A中的內容?A、B僅僅是窗口的代號,不是窗口名字 十二、瞭解ajax嗎?用過嗎?…… 1三、什麼是MVC?用過嗎?使用時遇到了什麼問題,怎麼解決的? 14.寫出 訪問 http://www.sina.com.cn 所需的報文頭,嘿嘿,這是超級豬本身想起來地。md5_file() —————————————————————————– —————————————————————————– —————————————————————————– 最新的新浪pHp面試題(2009.3) 1. echo count(「abc」); 輸出什麼? 答案:1 2. 用pHp寫出顯示客戶端Ip與服務器Ip的代碼 答案:客戶端 getenv(‘REMOTE_ADDR’); 服務器端 getenv(‘SERVER_ADDR’); // gethostbyname(「www.baidu.com」); 3. error_reporting(2047)什麼做用? 答案:至關於 error_reporting(‘E_ALL’); 輸出全部的錯誤 4.如何實現pHp、JSp交互? 題目有點含糊不清,SOAp,XML_RpC,Socket function,CURL均可以實現這些,若是是考pHp和Java的整合,pHp內置了這種機制(若是考pHp和.NET的整合,也能夠這麼回答), 例如$foo = new Java(‘java.lang.System’); 5. 打開php.ini中的Safe_mode,會影響哪些參數?至少說出6個。 答案:此模塊打開時,php將檢查當前腳本的擁有者是否和被操做文件的擁有者相同,所以,將影響文件操做類函數,程序執行函數(program Execution Functions)。這些函數有.pathinfo,basename,fopen,system,exec,proc_open 等函數; 7. 請寫一個函數驗證電子郵件的格式是否正確(要求使用正則) function checkEmail($mail){ $reg = ‘/^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$/’; $rst = preg_match($reg , $mail); if($rst){ return TRUE; }else { return FALSE; } } 11. 寫個函數用來對二維數組排序。 array_multisort() 12. 寫5個不一樣的本身的函數,來截取一個全路徑的文件的擴展名,容許封裝php庫中已有的函數。 13. 一羣猴子排成一圈,按1,2,…,n依次編號。而後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停 的進行下去,直到最後只剩下一隻猴子爲止,那隻猴子就叫作大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號 七、優化MYSQL數據庫的方法。 (1).數據庫設計方面,這是DBA和Architect的責任,設計結構良好的數據庫,必要的時候,去正規化(英文是這個:denormalize,中文翻譯成啥我不知道),容許部分數據冗餘,避免JOIN操做,以提升查詢效率 (2).系統架構設計方面,表散列,把海量數據散列到幾個不一樣的表裏面.快慢表,快表只留最新數據,慢表是歷史存檔.集羣,主服務器Read & write,從服務器read only,或者N臺服務器,各機器互爲Master (3).(1)和(2)超越pHp programmer的要求了,會更好,不會不要緊.檢查有沒有少加索引 (4).寫高效的SQL語句,看看有沒有寫低效的SQL語句,好比生成笛卡爾積的全鏈接啊,大量的Group By和order by,沒有limit等等.必要的時候,把數據庫邏輯封裝到DBMS端的存儲過程裏面.緩存查詢結果,explain每個sql語句 (5).所得皆必須,只從數據庫取必需的數據,好比查詢某篇文章的評論數,select count(*) … where article_id = ? 就能夠了,不要先select * … where article_id = ?而後msql_num_rows. 只傳送必須的SQL語句,好比修改文章的時候,若是用戶只修改了標題,那就… set title = ? where article_id = ?不要set content = ?(大文本) (6).必要的時候用不一樣的存儲引擎.好比InnoDB能夠減小死鎖.HEAp能夠提升一個數量級的查詢速度 ———————————————————————— $s = ‘abc’; if ($s==0) echo ‘is zero’; else echo ‘is not zero’; ?> 好多人答錯了,認爲答案是輸出字符串「is not zero」。其實正確答案應該是輸出字符串「is zero」。 緣由其實簡單,由於 pHp 是一門弱類型的語言,它對變量沒有「必須先定義再使用」的強制要求,變量的類型也是根據賦值的類型來靈活變化的。這一「靈活性」看似靈活,實際上埋下了錯 誤的隱患。雖然 $s = ‘abc’; 語句定義了變量 $s 爲字符串類型,但由於 if ($s==0)語句中,$s 是和數字型常量比較,因此 $s 這時被隱含的轉換成了數字型變量,其值是 0,因此 $s==0 比較的結果就爲真。 犯這一類型錯誤的人通常是從 Java、C 等語言轉到 pHp 開發的程序員,由於 Java、C 等語言是強類型語言,是不容許不一樣類型的變量和常量相互比較的,在這種狀況下會報告語法錯誤。 其實 pHp 語言的開發者並非沒有注意到這類問題,在 pHp 語言裏還有一個嚴格比較的運算符「===」,要求比較的雙方必須類型一致,把上述 if ($s==0) 語句寫爲 if ($s===0) 就會避免前述錯誤的發生。 ———————————————————————————– $str=」cd」; $$str=」hotdog」; //$cd $$str.=」ok」; echo $cd; //hotdogok ?> ————————————————————————————– 九、 apache+mysql+php實現最大負載的方法 主要是配置文件的優化了,另外用linux跑要比用windows跑效果好一點。 mkdir建立目錄 touch建立文件夾 修改權限chmod之類 5一、請寫出pHp5權限控制修飾符(3分) private protected public 1三、對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?(4分) 首先,確認服務器硬件是否足夠支持當前的流量 其次,優化數據庫訪問。 第三,禁止外部的盜鏈。 第四,控制大文件的下載。 第五,使用不一樣主機分流主要流量 第六,使用流量分析統計軟件。 htmlspecialchars() 函數把一些預約義的字符轉換爲 HTML 實體。 htmlentities() 函數把字符轉換爲 HTML 實體。(htmlentities( )的轉義更爲完全。) SQL注入是很容易避免的。正如第一章所說起的,你必須堅持 過濾輸入和轉義輸出。——— microtime 返回當前時間戳, mktime()取得指定的時間戳 //本頁地址,當前腳本的名稱. echo $_SERVER[\pHp_SELF\].」」; //連接到當前頁面的前一頁面的 URL 地址: echo $_SERVER[\HTTp_REFERER\].」」; 3.在HTTp 1.0中,狀態碼 401 的含義是(4);若是返回「找不到文件」的提示,則可用 header 函數, 其語句爲(5)。 (4)未受權 (5) header(「HTTp/1.0 404 Not Found」);———找不到文件 header(「HTTp/1.1 403 Forbidden」);———不容許訪問 7.以Apache模塊的方式安裝pHp,在文件http.conf中首先要用語句(10)動態裝載pHp模塊, 而後再用語句(11)使得Apache把全部擴展名爲php的文件都做爲pHp腳本處理。 (10) LoadModule php5_module 「c:/php/php5apache2.dll」 (11) AddType application/x-httpd-php-source .phps AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml 9.類的屬性能夠序列化後保存到 session 中,從而之後能夠恢復整個類,這要用到的函數是(14)。 serialize() /unserialize() 10.一個函數的參數不能是對變量的引用,除非在php.ini中把(15)設爲on. allow_call_time_pass_reference |
尹勇荷 |
回覆 3 樓 2015-08-04 問題:請用最簡單的語言告訴我PHP是什麼? 回答:PHP全稱:Hypertext Preprocessor,是一種用來開發動態網站的服務器腳本語言。 問題:什麼是MVC? 回答:MVC由Model(模型), View(視圖)和Controller(控制器)組成,PHP MVC能夠更高效地管理好3個不一樣層的PHP代碼。 Model:數據信息存取層。 View:view層負責將應用的數據以特定的方式展示在界面上。 Controller:一般控制器負責從視圖讀取數據,控制用戶輸入,並向模型發送數據。 問題:在頁面中引用CSS有幾種方式? 回答:在頁面中使用CSS有3中方式: 引用外部CSS文件 內部定義Style樣式 內聯樣式 問題:PHP支持多繼承嗎? 回答:不能夠。PHP類只能繼承一個父類,並用關鍵字「extended」標識。 問題:請問PHP中echo和print有什麼區別? 這兩個看起來很類似,由於它們都是將一些值打印在屏幕上。可是echo和print的本質區別在於:echo用來輸出字符串,顯示多個值的時候能夠用逗號隔開。只支持基本類型,print不只能夠打印字符串值,並且能夠打印函數的返回值。 問題:請問GET和POST方法有什麼區別? 回 答:咱們再網頁上填寫的表單信息均可以經過這兩個方法將數據傳遞到服務器上,當咱們使用GET方法是,全部的信息都會出如今URL地址中,而且使用GET 方法最多隻能傳遞1024個字符,因此若是在傳輸量小或者安全性不那麼重要的狀況下可使用GET方法。說到POST方法,最多能夠傳輸2MB字節的數 據,並且能夠根據須要調節。 問題:PHP中獲取圖像尺寸大小的方法是什麼? 回答:getimagesize () 獲取圖片的尺寸 Imagesx () 獲取圖片的寬度 Imagesy () 獲取圖片的高度 問題:PHP中的PEAR是什麼? 回答:PEAR也就是爲PHP擴展與應用庫(PHP Extension and Application Repository),它是一個PHP擴展及應用的一個代碼倉庫。 問題:如何用PHP和MySQL上傳視頻? 回答:咱們能夠在數據庫中存放視頻的地址,而不須要將真正的視頻數據存在數據庫中。能夠將視頻數據存放在服務器的指定文件夾下,上傳的默認大小是2MB,可是咱們也能夠在php.ini文件中修改max_file size選項來改變。 問題:PHP中的錯誤類型有哪些? 回答:PHP中遇到的錯誤類型大體有3類。 提示:這都是一些很是正常的信息,而非重大的錯誤,有些甚至不會展現給用戶。好比訪問不存在的變量。 警告:這是有點嚴重的錯誤,將會把警告信息展現給用戶,但不會影響代碼的輸出,好比包含一些不存在的文件。 錯誤:這是真正的嚴重錯誤,好比訪問不存在的PHP類。 問題:如何在PHP中定義常量? 回答:PHP中使用Define () 來定義常量。 define (「Newconstant」, 30); 問題:如何不使用submit按鈕來提交表單? 若是咱們不想用submit按鈕來提交表單,咱們也能夠用超連接來提交,咱們能夠這樣寫代碼: <a href=」javascript: document.myform.submit();」>Submit Me</a> |
高璐奇 |
回覆 4 樓 2015-08-04 紮實的基礎知識、高質量的代碼、清晰的思路、優化代碼的能力、優秀的綜合能力是編程技術面試的五大要點。 找工做一直是一個熱門話題。要想找到心儀的工做,不免須要通過多輪面試。編程面試是程序員面試過程當中最爲重要的一個環節。若是能在編程面試的環節充分展現本身的能力,那麼拿到中意的Offer就是水到渠成的事情。 我前後在歐特克、微軟和思科等公司任軟件工程師,屢次接受他人的面試,同時也面試過不少人。總結面試與被面試的經驗,我發現儘管面試官的背景、性格各不 相同,但都關注應聘者五種素質:紮實的基礎知識;能寫高質量的代碼;分析問題時思路清晰;能優化時間效率和空間效率;具有包括學習能力、溝通能力、發散思 維能力等在內的綜合能力。 紮實的基礎知識 紮實的基本功是成爲優秀程序員的前提條件,所以面試官首要關注應聘者的素質便是否具有紮實的基礎。一般基本功在編程面試環節體如今兩個方面:一是編程語言,二是數據結構和算法。 每一個程序員至少要熟練掌握1~2門編程語言。面試官從應聘者在面試過程當中寫的代碼以及跟進的提問中,能看出他編程語言掌握的熟練程度。以大部分公司面試 要求的C++爲例,若是函數須要傳入一個指針,面試官可能會問是否須要爲該指針加上const,把const加在指針不一樣的位置有什麼區別;若是寫的函數 須要傳入的參數是一個複雜類型的實例,面試官可能會問傳入值參數或者引用參數有什麼區別,何時須要爲傳入的引用參數加上const。 數據結構一般是編程面試過程當中考查的重點。在參加面試以前,應聘者須要熟練掌握鏈表、樹、棧、隊列以及哈希表等數據結構以及它們的操做。若是咱們留心各 大公司的面試題,就會發現鏈表和二叉樹相關的問題是不少面試官喜歡問的問題。這方面的問題看似簡單,但真正掌握也很不容易,特別適合在短短几十分鐘的面試 時間內檢驗應聘者的基本功。若是應聘者事先對鏈表的插入和刪除結點了如指掌,對二叉樹的各類遍歷方法的循環和遞歸寫法都爛熟於胸,那麼真正到了面試時也就 遊刃有餘了。 大部分公司對算法的要求都只是考查查找和排序。應聘者能夠在瞭解各類查找和排序算法的基礎上,重點掌握二分查找、歸併排 序和快速排序,由於不少面試題都只是這些算法的變體而已。好比把排序好的數組的前面若干個數字移到數組的後面,而後問怎樣在這個數組之中找到最小的數字。 這道題其本質就是考查二分查找。少數對算法很重視的公司好比谷歌或者百度,還會要求應聘者熟練掌握動態規劃和貪婪算法。若是對這種類型的公司感興趣,那麼 應聘者在參加面試以前就應該增強對相關算法題目的練習。 高質量的代碼 只有注重質量的程序員,才能寫出魯棒穩定的 大型軟件。在面試過程當中,面試官總會格外關注邊界條件、特殊輸入等看似細枝末節但實質相當重要的地方,以此來分析應聘者是否注重代碼質量。不少時候,面試 官發現應聘者寫出來的代碼只能完成最基本的功能,一旦輸入特殊的邊界條件參數就會錯誤百出甚至程序崩潰。 舉個不少應聘者都被問過的一 個問題:寫一個函數,把字符串轉化成整數。這道題看似很簡單,絕大部分計算機專業的畢業生都能用十行之內的代碼實現最基本的功能。但是在實際面試過程當中, 十個應聘者中只有一我的能經過這道題的面試,由於絕大部分應聘者不能全面考慮到各類特殊輸入,好比輸入的字符串含中有非數字的符號、在字符串的開頭有正負 號、字符串中有正負號但其位置不是在字符串的開頭。 除此以外,面試官還但願應聘者能考慮的邊界條件包括2147483647(0x7FFFFFFF,int能表示的最大正整數)和-2147483648(0×80000000,int能表示的最小負整數)。 除了邊界條件和特殊輸入考慮不足以外,面試官還有一個不能容忍的錯誤就是程序崩潰。面試時不少應聘者都會忘記對空指針作特殊處理而致使程序崩潰。若是面 試時遇到鏈表、二叉樹相關的題目,應聘者必定要特別當心。由於這兩種題目對應的代碼裏一般會有大量的指針操做,若是考慮不周到,就有可能對空指針進行操做 而使程序崩潰。 好比這樣一道題:輸入一個鏈表的頭指針和一個無符號整數k,輸出該鏈表的倒數第k個結點。這個題目不少人都能想到用兩 個指針來解決:第一個指針先在鏈表上移動k-1步,同時讓第一個指針和第二個指針在鏈表上移動。當第一個指針移動到尾指針時,第二個指針指向的就是倒數第 k個結點。然而不是每一個應聘者都能根據正確思路寫出完整的代碼。很多應聘者會忽略兩種可能:一是輸入的鏈表頭指針有多是空指針;二是鏈表上結點的數目有 可能少於k個。忽略這兩點的代碼都存在崩潰的可能,從而很難得到面試官的青睞。 要想寫出魯棒的高質量代碼,須要在動手寫代碼以前想好 測試用例。在寫代碼以前,先要想好各類邊界條件和特殊輸入做爲測試用例。當代碼寫好以後,本身在內心用以前想好的測試用例來檢驗本身寫出的代碼,這樣就能 在面試官以前發現並解決問題。以求鏈表的倒數第k個結點爲例,若是事先想到了輸入頭指針爲空指針和鏈表上的結點總數少於k這兩個測試用例,而且在寫好代碼 以後在內心模擬代碼的運行過程,確保可以經過這兩個測試用例的測試,那麼這輪面試必然是可以經過的。 清晰的思路 只有思路清晰,應聘者纔有可能在面試過程當中解決複雜的問題。有時面試官會有意出一些比較複雜的問題,以考查可否在短期內造成清晰的思路並解決問題。對於 確實很複雜的問題,面試官甚至不期待應聘者能在面試不到一個小時的時間裏給出完整的答案,他更看重的可能仍是應聘者是否有清晰的思路。面試官一般不會喜歡 應聘者在沒有造成清晰思路以前就草率地開始寫代碼,結果寫出來的代碼容易邏輯混亂、錯誤百出。 應聘者能夠用幾個簡單的方法幫助本身造成清晰的思路。 首先是舉幾個簡單的具體例子讓本身理解問題。當一眼看不出問題中隱藏的規律時,能夠試着用1~2個具體的例子模擬操做的過程,這樣說不定就能經過具體的例子找到抽象的規律。 其次能夠試着用圖形表示抽象的數據結構。像分析與鏈表、二叉樹相關的題目時,能夠畫出它們的結構圖來簡化題目。 最後能夠試着把複雜的問題分解成若干個簡單的子問題,再一一解決。不少基於遞歸的思路,包括分治法和動態規劃法,都是把複雜的問題分解成一個或者多個簡單的子問題。 好比把二叉搜索樹轉化排序的雙向鏈表這個問題就很複雜。碰到這個問題,不妨先畫出1~2個具體的二叉搜索樹及其對應的排序雙向鏈表,直觀地感覺二叉搜索 樹和排序的雙向鏈表有哪些聯繫。若是一會兒找不出轉換的規律,能夠把整個二叉樹看出三部分:根結點、左子樹和右子樹。當遞歸地把轉換左右子樹這兩個子問題 解決以後,再把轉換左右子樹獲得的鏈表和根結點連接起來,整個問題也就解決了。 優化代碼的能力 優秀的程序員對時間和空間的消耗錙銖必較,他們頗有激情不斷優化本身的代碼。當面試官出的題目有多種解法時,一般他會期待應聘者最終可以找到最優解。這就要求應聘者在面試官提示還有更好的解法時,不能放棄思考,而應該努力尋找在時間消耗或者空間消耗上能夠優化的地方。 要想優化時間或者空間效率,首先要知道如何分析效率。即便是同一個算法,用不一樣方法實現的效率可能也會大不相同,要可以分析出算法及其代碼實現的效率。 例如求斐波那契數列,不少人喜歡用遞歸公式f(n)=f(n-1)+f(n-2)求解。若是分析它的遞歸調用樹,就會發現有大量的計算是重複的,時間效率 是以n的指數增長。但若是先求f(1)、f(2),再根據f(1)和f(2)求出f(3),接下來根據f(2)、f(3)求出f(4),並以此類推用一個 循環求出f(n),這種計算方法的時間效率就只有O(n),比前面遞歸的方法要好不少。 要想優化代碼的效率,還要熟知各類數據結構的 優缺點,並能選擇合適的數據結構解決問題。咱們在數組中根據下標能夠用O(1)完成查找。數組的這個特徵能夠用來實現簡單的哈希表解決不少面試題,好比在 字符串中找到第一個只出現一次的字符。再好比爲了找出n個數字中最小的k個數,須要一個數據容器來存儲k個數字。在這個數據容器中,咱們但願可以快速地找 到最大值而且能快速地替換其中的數字。通過權衡,咱們發現二叉樹好比最大堆或者紅黑樹都是實現這個數據容器的理想選擇。 要想優化代碼 的效率,也要熟練掌握經常使用的算法。面試中最經常使用的算法是查找和排序。若是從頭至尾順序掃描一個數組,須要O(n)時間才能完成查找操做。但若是數組是排序 的,應用二分查找算法就能把時間複雜度下降到O(logn)。排序算法除了可以給數組排序以外,還能用來解決其餘問題。好比快速排序算法中的 Partition函數可以用來在n個數裏查找第k大的數字,從而能夠用O(n)的時間在數組中找到出現次數超過數組長度一半的數字。若是面試題是一個求 最大值或者最小值的題目,則能夠嘗試用動態規劃法或者貪婪算法,好比用動態規劃法求出數組中連續子數組的最大和。 優秀的綜合能力 在面試過程當中,應聘者除了展現本身的編程能力和技術功底以外,還須要展現本身的軟技能,諸如溝通能力和學習能力。隨着軟件系統的規模愈來愈大,軟件開發 已經告別了單打獨鬥的年代,程序員與他人的溝通變得愈來愈重要。在面試過程當中,面試官會觀察應聘者在介紹項目經驗或者算法思路時是否觀點明確、邏輯清晰, 並以此判斷他溝通能力的強弱。另外,面試官也會從應聘者說話的神態和語氣來判斷他是否有團隊合做的意識。一般面試官不會喜歡高傲或者輕視合做者的人。 IT行業知識更新很快,所以程序員只有具有很好的學習能力才能跟上知識更替的步伐。一般面試官有兩種辦法考查應聘者的學習能力。第一種方法是詢問應聘者 最近在看什麼書、從中學到了哪些新技術。面試官能夠用這個問題了解應聘者的學習願望和學習能力。第二種方法是拋出一個新概念,接下來他會觀察應聘者能不能 在較短期內理解這個新概念並解決相關的問題。好比面試官要求應聘者計算第1500個醜數。不少人都沒有據說過醜數這個概念。這時面試官就會觀察應聘者面 對醜數這個新概念,能不能通過提問、思考、再提問的過程,最終找出醜數的規律從而找到解決方案。 知識遷移能力是一種特殊的學習能力。 若是咱們可以把已經掌握的知識遷移到其餘領域,那麼學習新技術或者解決新問題就會變得容易。面試官常常會先問一個簡單的問題,再問一個很複雜但和前面的簡 單問題相關的問題。這時面試官期待應聘者可以從簡單問題中獲得啓示,從而找到解決複雜問題的竅門。好比面試官先要求應聘者寫一個函數求斐波那契數列,再問 一個青蛙跳臺階的問題:一隻青蛙一次能夠跳上1級臺階,也能夠跳上2級臺階,請問這隻青蛙跳上n級的臺階總共有多少種跳法?應聘者若是具備較強的知識遷移 能力,就能分析出青蛙跳臺階問題實質上只是斐波那契數列的一個應用。 還有很多面試官喜歡考查應聘者的抽象建模能力和發散思惟能力。面 試官從平常生活中提煉出問題,好比如何判斷5張撲克牌是否是順子,考查應聘者能不能把問題抽象出來用合理的數據結構表示,並找到其中的規律解決這個問題。 面試官也能夠限制應聘者不得使用常規方法,這要求應聘者具有創新精神,可以打開思路從多角度去分析、解決問題。好比面試官要求應聘者不用加減乘除四則運算 實現兩個整數的加法。此時面試官期待應聘者可以打開思路,用位運算實現整數的加法。 |
鄭盛霞 |
回覆 5 樓 2015-08-04 IT公司AS3面試題 1.談談你對MVC的理解?? 答:MVC就是 模型、視圖 、控制器 的縮寫,視圖和用戶交互 經過事件致使控制器改變 控制器改變致使模型改變 或者控制器同時改變二者 模型改變致使視圖改變 或者視圖改變 潛在的從模型裏面得到參數 來改變本身。 Mvc就是一種模型 ,一種編程思想。 MVC(Model-View-Controller),即把一個應用的輸入、處理、輸出流程按照Model、View、Controller的方式進行分離,這樣一個應用被分紅三個層——模型層、視圖層、控制層。 視圖(View):表明用戶交互界面,MVC設計模式對於視圖的處理是限於視圖上數據的採集和處理,以及用戶的請求,而不包括在視圖上的業務流程的處理。 模型(Model):業務流程/狀態的處理以及業務規則的制定。業務流程的處理過程對其它層來講是黑箱操做,模型接受視圖請求的數據,並返回最終的處理結果。業務模型的設計能夠說是MVC的核心。 控制(Controller):能夠理解爲從用戶接收請求, 將模型與視圖匹配在一塊兒,共同完成用戶的請求,可是它卻不作任何的數據處理。 它的優點在與:開發人員能夠只關注整個結構中的其中某一層,能夠很容易的用新的實現來替換原有層次的實現,能夠下降層與層之間的依賴,有利於標準化,利於各層邏輯的複用 2. as3怎樣鏈接數據庫?? 答:as3 要和數據庫通訊 通常經過第三方語言 好比 jsp/ php /asp/ asp.net 等 As3經過解析xml裏面的數據和數據庫通訊。 切換。 3.瞭解as3與PHP通訊麼? 答:經過apache軟件(軟件介紹:最流行的HTTP服務器軟件之一。快速、可靠、可經過簡單的API擴展,Perl/Python解釋器可被編譯到服務器中,徹底免費,徹底源代碼開放。若是你須要建立一個天天有數百萬人訪問的Web服務器) 首先須要兩個文件 我隨便起一個名字test.php 和 test.fla 把他們放在apache運行目錄下面 As代碼裏面主要用到urlloader、urlrequest、urlvariable等類,用urlrequest.data 屬性和Urlrequest.method等屬性來和php傳參數。 Php裏面發送什麼,as就能夠接收到什麼,這樣能夠實現as3和php的通訊。 4. 怎麼獲取居中的位置?? 答:mc.x=stage.StageWidth/2 mc.y=stage.StageHeight/2 5. 多場景若是互相切換(考慮效率); 答:經過nextscene()函數 或者用Loader 加載另外的swf文件來場景 6:談談對A*尋路算法的理解 答: 一個估價值函數 f(n)=g(n)+h(n) g(n)就是當時目標的位置到指定點的位置的一個值 h(n)就是指定點的位置到目標點的位置的的一個值 7: as2與as3.的最主要區別是什麼?,以及相互的優缺點 答:as2和as3最大的區別在於 as2是面向過程的 as3是純面向對象的。As3增長了不少新的東西 好比正則表達式 ,垃圾回收機制,增長了不少error類。 裏面的函數架構變了不少 頂級函數縮減了不少 as3的架構更合理 8: 談談你對面向對象的理解 答:面向對象關鍵是對象,引用一句話「一切事物結對象」;對象有它固有的屬性和方法, 對象也就是由屬性的集合和方法的集合構成的, 談到對象了,對象是類的一個實例。 類和對象是面向對象的基礎 類是對象的一個抽象,不是具體的實例, 好比說狗類 分爲不少種,而狗就是一個抽象, 狗有四條腿,兩隻眼睛 等式他的屬性, 狗會吃東西,叫,等式他的方法。這是我理解的面向對象。 9.你的5(或3)年前景規劃和在5(或3)年後在flash行業要達到的目標(及我的職業規劃)?建議: 1.儘可能選擇有自主產品的公司,而非單純的外包公司。(有本身的產品,表明你能夠對你本身的產品進行持續維護和改良,對你自身的編程能力是一種持續性的提升) 2.儘可能選擇待成長型的公司,而並不是公司越大越好。(成長型的公司每每產品更有創意,開發成本更小,效率更高,有利於你在短期內積累更多的做品) 3.儘可能遠離廣告製做公司。 10什麼是OOP? OOP有那些特徵簡要說明? OOP: Object OrientedProgramming,面向對象的程序設計 特徵:抽象,多態,封裝,繼承 12.請說下你理解AS3的事件機制是什麼機制?你認爲正確的就能夠說出來. 答:從應用程序到最外層的容器在到容器裏的組件或容器遍歷註冊的事件,而後按照原路返回冒泡響應事件 AS3事件流分三個階段: 1.捕獲階段 (即由根節點流向子節點,檢測每一個節點是否註冊了監聽器) 2.目標階段 (激發在目標對象自己註冊的監聽程序) 3.冒泡階段 (從目標節點到根節點,檢測每一個節點是否註冊了監聽器) 當中涉及了兩個屬性target和currentTarget,target是事件的派發者,currentTarget是正在檢測的對象,當開始了事件流,事件的currentTarget屬性處於不斷變化中. PS:註冊事件時捕獲階段默認是關閉的,不管事件是否開啓了捕獲,事件流只會兩選一去執行 13.說說就你所知道的用flash作網站建設的優缺點 優勢:全面的控制、無縫的導向跳轉、更豐富的媒體內容、更體貼用戶的流暢交互、跨平臺和瘦客戶端的支持、以及與其它Flash應用方案無縫鏈接集成等 限制:受帶寬與下載時間的限,下載速度有時候很慢;受搜索引擎的限制,如今大部分的搜索引擎搜多不到Flash站點信息,可是google搜索引擎已經解決了這個問題。 15.as3.0垃圾回收器是如何工做的? flash player 8以前採用的是引用計數法,在flash player 8 以後用的是標記法,簡單的說就是:從應用的根節點開始,遍歷全部其上的引用,標記每一個它所發現的對象。而後迭代遍歷每一個被標記的對象,標記它們的子對象。 這個過程第歸進行,直到Player遍歷了應用的整個對象樹並標記了它所發現的每一個東西。在這個過程技術的時候,能夠安全地認爲,內存中那些沒有被打標記 的對象沒有任何活動引用,所以能夠被安全地釋放內存。通常來講,flash player採用的是一種低頻的垃圾回收機制,Flash Player的垃圾回收發生在FlashPlayer須要另外請求內存以前。但並非每次應用申請內存時都會致使垃圾回收的執行,只有當Flash佔用的 內存緊張到必定程度時纔會執行真正的垃圾回收,必定程度上取決於客戶端計算機的物理內存的大小。 16.什麼是遊戲引擎和對他的認識? 答:是指應用一般遊戲設計的模型構建一個「平臺「,可以 方便的支持遊戲開發後續的工做 引擎就是「用於控制全部遊戲功能的主程序,從計算碰撞、物理系統和物體的相對位置,到接受玩家的輸入,以及按照正確的音量輸出聲音等等 17. flash與flex是如何協調開發的? 這個問題能夠這樣來理解,若是是確實須要用到FLEX SDK的應用,那咱們就能夠創建一個flex工程,具體須要flash作UI的時候,輸出成swc做爲flex的skin,若是說並不須要flex sdk,只是爲了編碼方便而選擇flex的話,那咱們只要創建一個as工程,讓flex做爲flash的編碼器。 18.使用Flex Bulider3創建一下新的.mxml的頁面時默認的背景是藍色的,請問用什麼辦法能修改掉此背景顏色,以致於下次建立時背景不是爲默認的藍色的呢?請寫出你認爲正確的方法. 答:修改sdk\frameworks\projects\framework\default.css裏Application的backgroundColor: #0000FF; 19.flex的開發框架有哪些,它們有什麼優缺點? 答: 最多見的固然是Cairngorm、Puremvc了,此外還有Mate,Swiz等等,聽說被普遍應用的已經有10幾款了。Cairngorm做爲 Adobe官方出品,有着貴族血統的它比較全面,是這些框架中已知bug最少的,可是基於他的應用相對臃腫複雜一些,須要對每一個能夠被觸發的事件寫一個對 應的Command,編碼量巨大,而且單元測試很不容易,不適合敏捷開發。Puremvc應該是如今用的最多的as框架了。比較完善、而且與 Cairngorm相比,更適合中小型應用的開發,它與Cairngorm同樣,也是以MVC模式爲中心,並以Fa?0?4ade做爲中央存儲器的單件類 的形式進行開發的。說下Mate,它是一個比較奇怪的框架,是基於標籤的事件驅動型的。也就是說你不能再隨意的寫as類的,在使用Mate的狀況下,只能 用MXML來作這些事情。Swiz是Mate的孿生兄弟,長的挺像,沒具體用過,不大瞭解。 11.使用Flex Bulider3如何跟蹤程序? 答:我知道的三種1.trace() 2.設置斷點 3.當不在調試模式時能夠調用as的Alert.show()或js的alert() 如:navigateToURL(new URLRequest(「javascript:alert(traceMsg)」),」_self」); 20.在flex開發中,不少代碼都寫在mxml文件裏,爲了作到mvc模式,你是怎麼處理的。 我認爲mxml並不影響mvc模式啊。分兩種狀況來討論,首先,是本身建立整個應用結構的時候,那咱們能夠手動將UI所在的mxml歸爲一類,而後由 Mediator去操做或者說控制這些組件既可了,而後Mediator又統一交給Controller去操做。若是採用其餘框架來進行開發的話,那就更 不用來考慮這個問題了,像Cairngorm、Puremvc之類的框架已經很好的爲咱們解決了這些問題。只要按照它們的使用規範來進行開發,天然沒有問 題。 |
範發可 |
回覆 6 樓 2015-08-04 訪問控制代碼: class Foo { private $name = hdj; public function getName(){ return $this->name; } } class Bar extends Foo { public $name = deeka; } $bar = new Bar; var_dump($bar->name);
var_dump($bar->getName()); |
史君昌 |
回覆 7 樓 2015-08-04 小算法總結: //打印一個三角形 for($i=0;$i<=3;$i++) { for($j=0;$j<=3-$i;$j++){ echo ‘ ’; } for($k=0;$k<=2*$i;$k++) { echo 「*」; } echo ‘ ’; } ?> //楊輝三角 for($i=0;$i<6;$i++) { //第一個和最後一個都爲1 $a[$i][0]=1; $a[$i][$i]=1; } for($i=2;$i<6;$i++){ for($j=1;$j<$i;$j++) { $a[$i][$j]=$a[$i-1][$i-1]+$a[$i-1][$j]; } } for($i=0;$i<6;$i++) { for($j=0;$j<=$i;$j++){ echo $a[$i][$j].’ ’; } echo ‘ ’; } ?> //合併多個數組 function t(){ $c=func_num_args()-1;//返回傳遞給函數的參數個數 $a=func_get_args();//返回一個數組,包括函數的參數列表 for($i=0;$i<=$c;$i++){ if(is_array($a[$i])){ for($j=0;$j $r[]=$a[$i][$j]; } }else{ die(‘Not a array’); } } return $r; } print_r(t(range(1,4),range(1,4),range(1,4))); ?> //求牛 function cow($num,$y) { for($j=1;$j<$y;$j++) { if($j>=4 && $j<15) { $num++; cow($num,$y-$j); } if($j==20) $num–; } return $num; } echo cow(2,2); ?> //順序查找(數組裏查找某個元素) function seq_sch($array,$n,$k)//在某個位置以前查找某元素(不包括指定位置) { $array[$n]=$k; for($i=0;$i<$n;$i++) { if($array[$i]==$k) break; } if($i<$n) return $i; else return -1; } $array=array(‘a’,b’,c’); echo seq_sch($array,2,’b); ?> function show($i) { if($i==1) return 1; else return $i*show($i-1); } echo 「 」; echo show(3); ?> //裴波那挈數列 function b($n) { if($n<2) return $n; else return b($n-1)+show($n-2); } echo b(2); ?> |