[PHP] PHP 면접 질문 정리

2023. 12. 8. 12:04· PHP/Modern PHP
목차
  1. Q : 접근 제어자 public, private, protected의 차이
  2. Q : PSR은 무엇인가?
  3. Q : php 프레임워크 사용 경험, 장단점
  4. Q : Null coalescing operator 사용 방법
  5. Q : static는 무엇인가
  6. Q : PHP에서의 참조란
  7. Q: 세션과 쿠키의 차이
  8. Q : 게시판의 조회수 기능을 구현하는 방법
  9. Q : fopen() 함수에 대해서 설명
  10. Q : include(), require(), include_once(), require_once() 차이
  11. Q : 2차원 배열에서 키값(문자)으로 값을 찾는 법
  12. Q : 연산자 ==, === 의 차이
  13. Q : sql 인젝션을 대비한 php 방법
  14. Q : php 객체와 배열의 차이점
  15. Q : 문자열에서 마지막 글자를 제거하고 싶을 때
  16. Q : php 장단점
  17. Q : php의 현재 버전
  18. Q : Modern php란
  19. Q :  PHP 다중 상속을 지원 여부
  20. Q : PHP 슈퍼 전역 변수
  21. Q : PHP 스코프 연산자
  22. Q : PHP 가비지 컬랙션
  23. Q : PDO는 무엇인가
  24. Q : PHP 상수 선언

 

Q : 접근 제어자 public, private, protected의 차이

A : public은 어디서나, private는 같은 클래스에서, protected는 같은 클래스 및 자식 클래스에서 접근 가능


Q : PSR은 무엇인가?

A : php를 작성하기 위한 규칙, 코딩 스타일 가이드 권장 가이드, 버전마다 가이드가 다르므로 기존 가이드를 유지하는 게 좋음


Q : php 프레임워크 사용 경험, 장단점

A : Laravel 프레임워크를 주로 사용했고 CMS인 워드프레스가 있음

Laravel 간단한 코드로 강력한 웹 애플리케이션을 개발할 수 있는 PHP계의 스프링!
wordpress 간단하게 CMS 사이트를 만들 수 있으며 더 깊게 파고들어서 테마 및 플러그인을 적용 및 개발을 PHP로 가능

Q : Null coalescing operator 사용 방법

A : 키워드가 ??인 이항 연산자로 다음 코드는 $_GET['user'] 값이 없으면 'guest'를 $user에 저장

$user = $_GET['user'] ?? 'guest'

Q : static는 무엇인가

A : Class 내에서 정적 함수 앞에 static 키워드를 붙여서 선언하면 Class의 Instance 없이 바로 호출할 수 있다


Q : PHP에서의 참조란

A : C나 Go의 포인터와 비슷한 개념으로 메모리 주소 공간을 같이 사용할 수 있다,  &키워드를 사용해 주소를 표시


Q: 세션과 쿠키의 차이

A : 쿠키는 로컬에 필요한 데이터를 저장하고 서버의 처리가 필요하지 않기에 속도가 빠르다
세션은 서버에 저장하며 로컬에 SESSION ID를 쿠기로 저장하고 서버는 클라이언트마다의 세션을 갖기에 부하가 생김

 


Q : 게시판의 조회수 기능을 구현하는 방법

A : 보편적인 방법으로는 쿠키와 세션이 있다.
- 세션은 비교적 보안이 좋지만 서버에 저장하기 때문에 서버에 부하가 생김
- 쿠키는 서버의 공간을 절약하지만 비교적 보안이 취약하며 사용자가 임의로 제거할 수 있다.

이 값을 이용해 게시글 번호나 사용자 정보를 담아서 구분할 수 있다.


Q : fopen() 함수에 대해서 설명

A : filename이 지정한 파일을 엽니다, 성공 시 resource를 반환하고 실패하면 false를 반환


Q : include(), require(), include_once(), require_once() 차이

A : include는 호출될 때 파일을 포함시키며 파일이 없더라도 코드가 계속 실행
require는 무조건 파일을 포함시키며 파일이 없다면 Fatal Error로 코드가 실행되지 않음.

once가 추가되면 해당 파일을 오직 한번만 추가한다는 옵션을 추가하는 의미


Q : 2차원 배열에서 키값(문자)으로 값을 찾는 법

A : array_column으로 컬럼 배열을 찾고 array_search로 키 값을 통해 찾을 수 있다

array_search('찾으려는 값', array_column('값을찾으려는 배열', '찾을 컬럼'))

Q : 연산자 ==, === 의 차이

A : ==는 형변환해서 값이 같으면 참, ===는 지금 값의 데이터 타입이 같아야 참


Q : sql 인젝션을 대비한 php 방법

A : mysqli_real_escape_string 같은 기본 내장 함수로 체크하는 방법이 있지만
멀티바이트 환경에서는 우회 방법이 존재하므로 특수문자 필터링이 필요하다이

때 직접 필터링을 넣을 수도 있고 filter_var를 사용할 수도 있음


또는 PDO의 prepare 기능을 사용하면 기본적으로 해줌


Q : php 객체와 배열의 차이점

A : 아래와 같다

- 배열은 키, 인덱스로 접근하고 비슷한 데이터가 담음
- 객체는 프로퍼티로 접근하고 관련된 정보를 저장하며 메서들 호출 


Q : 문자열에서 마지막 글자를 제거하고 싶을 때

A : replace, slice 등으로 문자열을 바꿀 수 있음


Q : php 장단점

장점

- 낮은 개발 장벽, 넓은 생태계
- 오픈소스
- 대부분 운영체제에서 돌아감
- 인터프리터이므로 바로 결과를 받을 수 있음

단점

- PHP 8.2 등으로 개선된 성능이 시장에 알려지지 않음
- 웹 개발 특화, 과거의 스파게티 코드 존재


Q : php의 현재 버전

A : 마지막 버전이 8.2.12로 알고 있음

https://www.php.net/releases/index.php

 

PHP: Releases

The most recent branches to reach end of life status are: 8.0: 3 Aug 20237.4: 3 Nov 2022

www.php.net


Q : Modern php란

A : Modern PHP는 과거의 PHP 이미지에서 벗어나기 위한 것으로 아래 규칙들을 지켜야 함


- 최신버전의 PHP
- PSR(표준권고) 준수
- 패키지 매니저(Composer) 사용


Q :  PHP 다중 상속을 지원 여부

A : JAVA와 같이 다중 상속을 지원하지 않는다
이유로는 다이아몬드 문제와 같이 클래스간의 관계를 파악하기 어려워지는 걸 피하기 위함


Q : PHP 슈퍼 전역 변수

A : global 키워드로 전역변수를 지정할 수 있으며 아래와 같은 미리 정의된 슈퍼 글로벌을 제공

$GLOBALS // 전역 변수를 저장하는 슈퍼 글로벌 변수 
$_SERVER // 현재 실행 중인 PHP 스크립트에서 관련된 서버 및 실행 환경에 대한 정보를 저장
$_GET // HTML의 FORM이 보낸 GET 정보를 저장
$_POST // HTML의 FORM이 보낸 POST 정보를 저장
$_FILES // 클라이언트가 웹 양식을 통해 서버에 업로드한 파일 정보를 저장
$_COOKIE // 클라이언트에 저장된 쿠키를 가져오거나 설정할 수 있게 쿠키 정보를 저장
$_SESSION // 세션 데이터 정보를 저장
$_REQUEST // 클라이언트의 요청을 저장
$_ENV // 서버 환경 변수 저장

Q : PHP 스코프 연산자

A : parent로 부모 클래스에 접근할 수 있고, self로 본인 클래스에 접근할 수 있음


Q : PHP 가비지 컬랙션

A : PHP 5.3에 추가된걸로 메모리 관리법, 강제로 수집할 수 있고 가비지 수집 메커니즘을 켜거나 끌 수 있음


Q : PDO는 무엇인가

A : PHP에서 데이터베이스에서 접속할 때 여러가지 처리하기 위한 메서드를 모은 클래스


Q : PHP 상수 선언

A : define 함수를 사용하거나 클래스 내에서 const 키워드로 선언할 수 있음

반응형

'PHP > Modern PHP' 카테고리의 다른 글

[PHP] 게시판 만들기 with MVC - 3부 View(List & Create)  (1) 2023.12.27
[PHP] 게시판 만들기 with MVC - 2부 Routing  (0) 2023.12.26
[PHP] 게시판 만들기 with MVC - 1부 Migration  (1) 2023.12.26
PHP 써야 할까?  (0) 2022.11.18
PHP 인코더, 디코더 (소스코드 암호화) 해보기  (0) 2020.12.21
  1. Q : 접근 제어자 public, private, protected의 차이
  2. Q : PSR은 무엇인가?
  3. Q : php 프레임워크 사용 경험, 장단점
  4. Q : Null coalescing operator 사용 방법
  5. Q : static는 무엇인가
  6. Q : PHP에서의 참조란
  7. Q: 세션과 쿠키의 차이
  8. Q : 게시판의 조회수 기능을 구현하는 방법
  9. Q : fopen() 함수에 대해서 설명
  10. Q : include(), require(), include_once(), require_once() 차이
  11. Q : 2차원 배열에서 키값(문자)으로 값을 찾는 법
  12. Q : 연산자 ==, === 의 차이
  13. Q : sql 인젝션을 대비한 php 방법
  14. Q : php 객체와 배열의 차이점
  15. Q : 문자열에서 마지막 글자를 제거하고 싶을 때
  16. Q : php 장단점
  17. Q : php의 현재 버전
  18. Q : Modern php란
  19. Q :  PHP 다중 상속을 지원 여부
  20. Q : PHP 슈퍼 전역 변수
  21. Q : PHP 스코프 연산자
  22. Q : PHP 가비지 컬랙션
  23. Q : PDO는 무엇인가
  24. Q : PHP 상수 선언
'PHP/Modern PHP' 카테고리의 다른 글
  • [PHP] 게시판 만들기 with MVC - 2부 Routing
  • [PHP] 게시판 만들기 with MVC - 1부 Migration
  • PHP 써야 할까?
  • PHP 인코더, 디코더 (소스코드 암호화) 해보기
DSeung
DSeung
DSeung
Dev log
DSeung
  • 분류 전체보기 (193)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (10)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
[PHP] PHP 면접 질문 정리
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.