> 백엔드 개발 > PHP 튜토리얼 > PHP 면접 질문 공유(구직하는 자에게 복이 있도다)

PHP 면접 질문 공유(구직하는 자에게 복이 있도다)

WBOY
풀어 주다: 2016-07-25 09:04:40
원래의
1168명이 탐색했습니다.
  1. $tmp = 0 == "a"? 1: 2;
  2. echo $tmp;
  3. ?>
코드 복사

int 및 string 유형 강제로 인한 결과 1, 0==="a"

0 == 0 true여야 합니다. PHP는 약한 유형입니다. . $tmp = 0 === "a" 1: 2; echo $tmp; 2

4. 알려진 문자열은 다음과 같습니다: $str = "1109063 milo 1"; 한 줄의 코드를 사용하여 문자열의 1109063을 $uid에, milo를 $user에, 1을 $type에 할당합니다. 공간은 다음과 같습니다 list($uid, $user, $type) = 폭발(" ", $str); t는 다음과 같다 list($uid, $user, $type) = 폭발("t", $str); list($uid, $user, $type) = sscanf($str, "%d %s %d"); $n = sscanf($auth, "%dt%s %s", $id, $first, $last);

5. 다음 유형의 부호 있는 범위와 부호 없는 범위를 각각 나열하십시오. TINYINT SMALLINT MEDIUMINT INT TINYINT-2^7 - 2^7-10 ~ 2^8-1 SMALLINT-2^15 - 2^15-1 0 ~ 2^16-1 MEDIUMINT-2^23 - 2^23-1 0 ~ 2^24-1 INT-2^31 - 2^31-1 0 ~ 2^32-1

6. 다음 배열을 한 줄로 묶어보세요. i am milo!

  1. $arr = array(
  2. '나', 'AM', 'MILO!', 'DAY', 'DAY', 'UP!'
  3. );
  4. ?>
  5. $str = strtolower(implode(" ",$arr));
코드 복사

7. 다음 함수를 호출하여 함수를 가져오고 count 값을 가져옵니다.

  1. function get_list($cnd = array(), &$count = false)
  2. {
  3. // 의사 코드는 $cnd를 처리하고 데이터를 할당합니다
  4. $datas = 'i am call back';
  5. $count && $count = rand(1, 10000);
  6. return $datas;
  7. }
  8. ?>
  9. $count=1;
  10. $data = get_list($cnd,&$count);
  11. echo $count;
코드 복사

8. 세션 메커니즘을 대체하는 여러 가지 방법으로 각 방법의 장점과 단점을 간략하게 설명합니다. mysql, memcache 및 cookie는 고유한 상태 식별 코드를 유지합니다

9. 다음 HTTP 상태 코드의 가능한 원인 및 처리 방법 200, 301, 404, 502, 503 200 요청이 성공했으며 요청에서 예상하는 응답 헤더 또는 데이터 본문이 이 응답과 함께 반환됩니다. 301 요청된 리소스는 새로운 위치로 영구적으로 이동되었으며, 향후 이 리소스에 대한 참조는 이 응답과 함께 반환된 여러 URI 중 하나를 사용해야 합니다. 가능하다면 링크 편집 기능이 있는 클라이언트는 요청된 주소를 서버에서 반환된 주소로 자동으로 수정해야 합니다. 별도로 지정하지 않는 한 이 응답도 캐시 가능합니다. 새로운 영구 URI는 응답의 위치 필드에 반환되어야 합니다. HEAD 요청이 아닌 이상 응답 엔터티에는 새 URI에 대한 하이퍼링크와 간단한 설명이 포함되어야 합니다. GET 또는 HEAD 요청이 아닌 경우 요청 조건이 그에 따라 변경될 수 있으므로 브라우저는 사용자가 확인하지 않는 한 자동 리디렉션을 금지합니다.

참고: HTTP/1.0 프로토콜을 사용하는 일부 브라우저의 경우 보내는 POST 요청이 301 응답을 받으면 후속 리디렉션 요청이 GET 메서드가 됩니다.

404 요청이 실패했습니다. 요청한 리소스를 서버에서 찾을 수 없습니다. 상태가 일시적인지 영구적인지 사용자에게 알려주는 정보는 없습니다. 서버가 상황을 알고 있는 경우 410 상태 코드를 사용하여 일부 내부 구성 메커니즘 문제로 인해 이전 리소스를 영구적으로 사용할 수 없으며 점프 주소가 없음을 알려야 합니다. 404 상태 코드는 서버가 요청이 거부된 이유를 밝히고 싶지 않거나 다른 적절한 응답을 사용할 수 없는 경우 널리 사용됩니다. 502 게이트웨이 또는 프록시로 작동하는 서버가 요청을 수행하려고 할 때 업스트림 서버로부터 잘못된 응답을 받았습니다. 503 임시 서버 점검 또는 과부하로 인해 현재 서버에서 요청을 처리할 수 없습니다. 이 상태는 일시적이며 일정 시간이 지나면 복원됩니다. 지연이 예상되는 경우 응답에는 지연을 나타내는 Retry-After 헤더가 포함될 수 있습니다. 이 Retry-After 메시지가 제공되지 않으면 클라이언트는 500 응답을 처리하는 것과 동일한 방식으로 이를 처리해야 합니다. 참고: 503 상태 코드가 존재한다고 해서 서버가 과부하되었을 때 이를 사용해야 한다는 의미는 아닙니다. 일부 서버는 단순히 클라이언트의 연결을 거부하려고 합니다.

200 OK 모든 것이 정상이며 GET 및 POST 요청에 대한 응답 문서가 이어집니다. 301 영구적으로 이동됨 클라이언트가 요청한 문서가 다른 곳에 있습니다. 새 URL은 Location 헤더에 제공됩니다. 브라우저는 자동으로 새 URL에 액세스해야 합니다. 404 Not Found 지정된 위치의 리소스를 찾을 수 없습니다. 이것도 일반적인 반응이다. 502 Bad Gateway 서버가 게이트웨이 또는 프록시 역할을 할 때 요청을 완료하기 위해 다음 서버에 액세스하지만 서버가 잘못된 응답을 반환합니다. 503 Service Unavailable 유지 관리 또는 과부하로 인해 서버가 응답하지 못했습니다. 예를 들어 데이터베이스 연결 풀이 가득 차면 서블릿이 503을 반환할 수 있습니다. 서버는 503을 반환할 때 Retry-After 헤더를 제공할 수 있습니다.

10. 다음 데이터베이스가 있습니다. 원래 mysql 확장을 사용하여 사용자 테이블의 처음 10개 행을 연결하고 쿼리합니다. 호스트: 192.168.0.254 포트: 3306 사용자: 한 명 패스:조각 데이터베이스: db_user 테이블: 사용자

  1. $link = mysql_connect("192.168.0.254:3306","one","piece") or die('연결할 수 없습니다: '.mysql_error ());
  2. mysql_select_db('db_user',$link);
  3. $query = mysql_query("사용자 제한 10에서 * 선택");
  4. while($rs = mysql_fetch_array($query,MYSQL_ASSOC) )
  5. {}
코드 복사

11. Autoload($class)를 사용하여 Lib 디렉토리에 클래스 자동 로딩을 구현하고 하위 디렉토리와 호환 가능

  1. $request->action = lcfirst(implode(array_map(

  2. 'ucfirst',
  3. explode( '-', strtolower($request->action))
  4. )));
  5. ---------------------------- ----------
  6. 함수 __autoload($class)
  7. {
  8. $cls = strtolower(str_replace("_", " /",$class));

  9. if(file_exsits(LIB.$cls.'.php'))
  10. {
  11. include_once(LIB. $ cls.'.php');
  12. }
  13. else
  14. {
  15. die("{$class} 클래스를 찾을 수 없음");
  16. }
  17. }
  18. 정의됨( " LIB",'/data/wwwroot/www.xx.com/lib/');
  19. $author = new Lib_Author();
  20. --------------- - -------------------
  21. 기능 __authload($ class)
  22. {
  23. $cls =Explode("_",$class);
  24. if(@is_dir($cls[1]))
  25. {
  26. if(@ is_file($ cls[2]))
  27. {
  28. include_once("CON_PATH".$cls[1].'/'.$cls[2].".php");
  29. }
  30. else
  31. {
  32. dir('error');
  33. }
  34. }
  35. else if(@is_file($cls[1].".php"))
  36. {
  37. include_once ("CON_PATH".$cls[1].".php");
  38. }
  39. else
  40. {
  41. dir('error');
  42. }
  43. }
  44. -------------
  45. 함수 __autoload($class )
  46. {
  47. $cls = 폭발("_",$class);
  48. $file = get_file($cls);
  49. if($file=='error')
  50. {
  51. die('error');
  52. }
  53. include_once($file);
  54. }
  55. function get_file($dir)
  56. {
  57. if(is_array($dir) )
  58. {
  59. foreach($dir as $k=>$v)
  60. {
  61. $tmpdir .= $v.'/';
  62. if(is_dir('CON_PATH'. $tmpdir) )
  63. {
  64. continue();
  65. }
  66. else if(is_file('CON_PATH'.$tmpdir.".php"))
  67. {
  68. return 'CON_PATH '.$ tmpdir.".php";
  69. }
  70. else
  71. {
  72. return 'error';
  73. }
  74. }
  75. return 'error';
  76. }
  77. return 'error';
  78. }

  79. defed("CON_PATH","/data/wwwroot/www.xx.com/app/cntroller/");

  80. $ sb = new Controller_sb();
  81. ------------ -----------
  82. function __autoload_my_classes($classname)
  83. {
  84. # ... 여기에 클래스를 포함하는 논리
  85. }
  86. spl_autoload_register('__autoload_my_classes') ;
  87. ------------ ----------------------- ----< /p>
코드 복사

12. 오류를 캡처하고 출력하려면 set_error_handle을 사용하세요. 수준은 사용자가 결정합니다.

  1. set_error_handle(callback,level)

  2. 함수 콜백(int $errno , string $errstr [, string $errfile [ , int $errline [, array $errcontext ]]] ){
  3. }

  4. function dealErrorHandler($errno,$errstr,$errfile,$errline)

  5. {
  6. switch($errno){
  7. case E_USER_ERROR:
  8. echo "error [$errno] $errstr $errfile 파일의 $errline 줄에 치명적인 오류가 발생했습니다.";
  9. break;
  10. case E_USER_WARNING:
  11. echo "내 경고 [$errno] $errstr":
  12. break;
  13. case E_USER_NOTICE:
  14. echo "내 경고[$errno] $errstr";
  15. break;
  16. 기본값:
  17. echo "unkonwn 오류 유형:[$errno] $errstr";
  18. break;
  19. }
  20. }
  21. set_erro_handler(dealErrorHandler);

  22. Trigger_error("알림", E_USER_NOTICE);

  23. trigger_error("경고", E_USER_WARNING);
  24. trigger_error("오류", E_USER_ERROR);

코드 복사

13. PHP 프로그램에서 알림 경고를 보호하는 두 가지 방법을 간략하게 설명합니다. 변수를 초기화하고, 파일 시작 부분에 오류 수준을 설정하거나 php.ini를 수정하여 error_reporting을 설정하세요. set_error_handler 및 @suppress 오류

1. 프로그램에 추가: error_reporting (E_ALL & ~E_NOTICE); 2. 또는 php.ini를 수정하세요: error_reporting = E_ALL 다음으로 변경: error_reporting = E_ALL & ~E_NOTICE 3.error_reporting(0);또는 php.inidisplay_errors=Off를 수정하세요. 1 2 3 4 다음 페이지 마지막 페이지



원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿