LexisNexis(律商联讯)最新面试题

律商联讯PHP开发工程师面试题

关于律商联讯

律商联讯(LexisNexis®)是世界领先的法律、新闻和商业资讯服务解决方案提供商,其旗舰产品包括基于网络的Lexis®和Nexis®信息服务,此服务主要面向法律,风险管理,企业,政府,会计和学术领域内的专业人士。作为励德爱思唯尔集团旗下的子公司,律商联讯在全球100多个国家设有营业机构,拥有员工13,000名。
律商联讯目前在国内设有北京和上海办事机构,向用户提供广泛的产品和服务,其中包括律商联讯中文资讯网(research.lexisnexis.com.cn),律商联讯律师搜索网(findalawyer.cn),Lexis.com,Nexis.com,律商联讯学术大全、环境大全、统计大全和国会大全,进口法律书刊,法律会议和培训等。港澳台地区有近100所大学选择了律商联讯,中国大陆已有100多所大学成为律商联讯的用户。

面试注意:

1. 个人履历表是全英文的,所以你应该能看懂英文简历常见用语(注意缩写)。可以用中文填写。
2. PHP面试题全部英文的,所以你应该能够看得明白问题。

面试过程:

1. 填写个人履历
2. PHP面试题目作答
3. 考官面试(一男一女,男的是技术部门的,女的是人力资源部的)

面试题目:

注意:原题是英文的,本人根据自己的意思来理解的。

1. 下列哪一句不能将'john'添加到数组$user?

A. $user[] = 'john';

B. array_add($user, 'john');

C. array_push($user, 'john');

D. $user ||= 'john';

2. 比较sort(), assort(), ksort()三个函数的用法以及使用环境。

3. 以下代码输出什么内容, 为何。

$num = 10;
function foo(){
$num = $num * 10;
}
foo();
echo $num;

4. 引用和普通变量的区别。

5. 加载类库的方法。

6. foo()和@foo()的区别。

7. 你平时如何调试PHP代码。

8. === 的作用是什么?举一个例子,使用 == 返回true,但是使用 === 返回false。

9. 声明一个不含方法和属性的类。

10. 创建一个对象myclass的实例。

11. 从类的内部访问或者设置属性。

12. include与include_once的区别和联系,以及include与require的区别和联系。

13. 使用什么函数重定向浏览器请求。

14. 打开一个文件供读写。

15. mysql_fetch_row和mysql_fetch_array的区别。

16. 一个ereg_replace的理解。里面涉及正则捕捉和引用。

17. 写一个正则表达式,过滤所有的HTML代码。

18. 比较PHP与Perl的array和hash

19. How to get around stateless nature of HTTP using PHP ? (我理解错误)

20. GD是用来做什么的。

21. 用PHP写出几个方法用来输出HTML代码块。

22. Is PHP better than Perl? Discuss.

考官现场提问:

1. 工作经历,工作职责,上一家公司的情况(女考官)。

2. 使用PHP多长时间?精通哪一块?

3. 使用MySQL多长时间?精通哪一块?

4. 比较MySQL的两种常用引擎的区别(MyIsAm和InnoDB)。

5. 从各种角度优化以下SQL语句:SELECT * FROM tablename WHERE id IN (13, 15, 18, 19) and age=21 ORDER BY address DESC

6. 是否了解XML?讲一下格式规范。

7. 是否使用PHP解析过XML文件?使用的什么方法?该方法使用的是什么API?(没有听懂后面半句是什么意思)

8. 写一个正则表达式

9. 一个3k+1数组,k为非负整数,请问从1乘到7000,结果的末尾会包含多少个0?

网友的回答:


1.

以下哪一句不會把 John 新增到 users 陣列?
$users[] = 'john';
成功把 John 新增到陣列 users。
array_add($users,’john’);
函式 array_add() 無定義。
array_push($users,‘john’);
成功把 John 新增到陣列 users。
$users ||= 'john';
語法錯誤。
sort()、assort()、和 ksort() 有什麼分別?它們分別在什麼情況下使用?
sort()
根據陣列中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當陣列索引鍵的值無關疼癢時用來把陣列排序。
assort()
PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤。
asort()
與 sort() 一樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯想陣列排序。
ksort()
根據陣列中索引鍵的值,以英文字母順序排序,特別適合用於希望把索引鍵排序的聯想陣列。
以下的代碼會產生什麼?為什麼?
$num = 10;
function multiply(){
$num = $num * 10;
}
multiply();
echo $num;
由於函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
一個 reference 跟一個正規的變量有什麼分別?如何 pass by reference?在什麼情況下我們需要這樣做?
Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個變量的值時,整個應用都見到這個變量的新值。
一個正規變量傳送給函式的是它的值,當函式改變這個變量的值時,只有這個函式才見到新值,應用的其他部分仍然見到舊值。
$myVariable = "its' value";
Myfunction(&$myVariable); // 以 reference 傳送參數
以 reference 傳送參數給函式,可以使函式改變了的變量,即使在函式結束後仍然保留新值。
哪一些函式可以用來在現正執行的腳本中插入函式庫?
對這道題目不同的理解會有不同的答案,我的第一個想法是插入 PHP 函式庫不外乎 include()、include_once()、require()、require_once(),但細心再想,「函式庫」也應該包括 com 物件和 .net 函式庫,所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起「函式庫」的時候,別忘記這兩個函式
foo() 與 @foo() 有什麼分別?
foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。
@foo() 在執行這個函式時,會隱藏所有上述的錯誤訊息。
很多應用程式都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤訊息,我認為這是很嚴重的失誤,因為錯誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。
你如何替 PHP 的應用程式偵錯?
我並不常這樣做,我曾經試過很多不同的偵錯工具,在 Linux 系統中設定這些工具一點也不容易。不過以下我會介紹一個近來頗受注目的偵錯工具。
PHP - Advanced PHP Debugger 或稱 PHP - APD,第一步是執行以下的指令安裝:
pear install apd
安裝後在你的腳本的開頭位置加入以下的語句開始進行偵錯:
apd_set_pprof_trace();
執行完畢,打開以下檔案來查閱執行日誌:
apd.dumpdir
你也可以使用 pprofp 來格式化日誌。
詳細的資料可以參閱 http://us.php.net/manual/en/ref.apd.php。
「===」是什麼?試舉一個「==」是真但「===」是假的例子。
「===」是給既可以送回布爾值「假」,也可以送回一個不是布爾值但卻可以賦與「假」值的函式,strpos() 和 strrpos() 便是其中兩個例子。
問題的第二部份有點困難,想一個「==」是假,但是「===」是真的例子卻很容易,相反的例子卻很少。但我終於找到以下的例子:
if (strpos("abc", "a") == true)
{
// 這部分永不會被執行,因為 "a" 的位置是 0,換算成布爾值「假」
}
if (strpos("abc", "a") === true)
{
// 這部份會被執行,因為「===」保證函式 strpos() 的送回值不會換算成布爾值.
}
你會如何定義一個沒有成員函式或特性的類別 myclass?
class myclass
{
}
你如何產生一個 myclass 的物件?
$obj = new myclass();
沒有比這個更簡單的了。

2.

1. 下列哪一句不能将'john'添加到数组$user?

A. $user[] = 'john';

B. array_add($user, 'john');

C. array_push($user, 'john');

D. $user ||= 'john'; //这句

2. 比较sort(), assort(), ksort()三个函数的用法以及使用环境。
//排序 没怎么了解.
3. 以下代码输出什么内容, 为何。

$num = 10;
function foo(){
$num = $num * 10;
}
foo();
echo $num;
//10

4. 引用和普通变量的区别。
//内存地址记录
5. 加载类库的方法。
//__autoload()
6. foo()和@foo()的区别。
// 屏蔽错误
7. 你平时如何调试PHP代码。
//用浏览器
8. === 的作用是什么?举一个例子,使用 == 返回true,但是使用 === 返回false。
//量等. $a = '1' $a ===1 false $a == 1 true
9. 声明一个不含方法和属性的类。
class cls{}
10. 创建一个对象myclass的实例。
new cls()
11. 从类的内部访问或者设置属性。
class cls{
function cls(){
$this->name = 'abc';
}
}
12. include与include_once的区别和联系,以及include与require的区别和联系。
//循环中仅引入一次或者多次. 错误报级别
13. 使用什么函数重定向浏览器请求。

14. 打开一个文件供读写。
//fopen
15. mysql_fetch_row和mysql_fetch_array的区别。
//数字键名, 与关连键名
16. 一个ereg_replace的理解。里面涉及正则捕捉和引用。
//正则替换.
17. 写一个正则表达式,过滤所有的HTML代码。
//正则不爽.
18. 比较PHP与Perl的array和hash
//不懂.
19. How to get around stateless nature of HTTP using PHP ? (我理解错误)
//http协议?
20. GD是用来做什么的。
//处理图片的.
21. 用PHP写出几个方法用来输出HTML代码块。
//htmlentities()
22. Is PHP better than Perl? Discuss.

考官现场提问:

1. 工作经历,工作职责,上一家公司的情况(女考官)。
上一家公司在我的代码领导下,已经被奥巴马定为指定代码生产商了.
2. 使用PHP多长时间?精通哪一块?
一年, php基础
3. 使用MySQL多长时间?精通哪一块?
一年,查询
4. 比较MySQL的两种常用引擎的区别(MyIsAm和InnoDB)。
事务处理
5. 从各种角度优化以下SQL语句:SELECT * FROM tablename WHERE id IN (13, 15, 18, 19) and age=21 ORDER BY address DESC
//慢慢讲.
6. 是否了解XML?讲一下格式规范。
不了解
7. 是否使用PHP解析过XML文件?使用的什么方法?该方法使用的是什么API?(没有听懂后面半句是什么意思)
xml类
8. 写一个正则表达式
eregi('[0-9]+',$str)
9. 一个3k+1数组,k为非负整数,请问从1乘到7000,结果的末尾会包含多少个0?

PHP操作XML文档属性

PHP XML操作类DOMDocument属性及方法
注意大小写一定不能弄错.

属性:

  1. Attributes 存储节点的属性列表(只读)
  2. childNodes 存储节点的子节点列表(只读)
  3. dataType 返回此节点的数据类型
  4. Definition 以DTD或XML模式给出的节点的定义(只读)
  5. Doctype 指定文档类型节点(只读)
  6. documentElement 返回文档的根元素(可读写)
  7. firstChild 返回当前节点的第一个子节点(只读)
  8. Implementation 返回XMLDOMImplementation对象
  9. lastChild 返回当前节点最后一个子节点(只读)
  10. nextSibling 返回当前节点的下一个兄弟节点(只读)
  11. nodeName 返回节点的名字(只读)
  12. nodeType 返回节点的类型(只读)
  13. nodeTypedValue 存储节点值(可读写)
  14. nodeValue 返回节点的文本(可读写)
  15. ownerDocument 返回包含此节点的根文档(只读)
  16. parentNode 返回父节点(只读)
  17. Parsed 返回此节点及其子节点是否已经被解析(只读)
  18. Prefix 返回名称空间前缀(只读)
  19. preserveWhiteSpace 指定是否保留空白(可读写)
  20. previousSibling 返回此节点的前一个兄弟节点(只读)
  21. Text 返回此节点及其后代的文本内容(可读写)
  22. url 返回最近载入的XML文档的URL(只读)
  23. Xml 返回节点及其后代的XML表示(只读)

方法:

  1. appendChild 为当前节点添加一个新的子节点,放在最后的子节点后
  2. cloneNode 返回当前节点的拷贝
  3. createAttribute 创建新的属性
  4. createCDATASection 创建包括给定数据的CDATA段
  5. createComment 创建一个注释节点
  6. createDocumentFragment 创建DocumentFragment对象
  7. createElement 创建一个元素节点
  8. createEntityReference 创建EntityReference对象
  9. createNode 创建给定类型,名字和命名空间的节点
  10. createPorcessingInstruction 创建操作指令节点
  11. createTextNode 创建包括给定数据的文本节点
  12. getElementsByTagName 返回指定名字的元素集合
  13. hasChildNodes 返回当前节点是否有子节点
  14. insertBefore 在指定节点前插入子节点
  15. Load 导入指定位置的XML文档
  16. loadXML 导入指定字符串的XML文档
  17. removeChild 从子结点列表中删除指定的子节点
  18. replaceChild 从子节点列表中替换指定的子节点
  19. Save 把XML文件存到指定节点
  20. selectNodes 对节点进行指定的匹配,并返回匹配节点列表
  21. selectSingleNode 对节点进行指定的匹配,并返回第一个匹配节点
  22. transformNode 使用指定的样式表对节点及其后代进行转换
  23. transformNodeToObject 使用指定的样式表将节点及其后代转换