그누보드6 주니어 프레임워크 면접

그누보드6 주니어 (1~3년) 프레임워크 10문항 조회수 60 · 2026-09-07 (월) 07:41:33
1 그누보드 기본 구조
Easy

Q. 그누보드6의 디렉토리 구조에서 theme, skin, plugin 폴더의 역할과 차이점을 설명해주세요.

각 폴더가 담당하는 UI 영역과 기능 확장 방식의 차이를 생각해보세요.

A. 모범답안

theme 폴더는 전체 사이트의 레이아웃과 디자인을 담당하며, 헤더, 푸터, 메인 페이지 등 전체적인 틀을 구성합니다. skin 폴더는 게시판, 최신글, 검색 등 특정 기능 모듈의 출력 형태를 담당하는 템플릿입니다. plugin 폴더는 그누보드의 기본 기능을 확장하거나 새로운 기능을 추가하는 독립적인 모듈을 담고 있습니다. theme은 사이트 전체의 일관성을, skin은 개별 기능의 다양성을, plugin은 기능 확장을 담당한다고 볼 수 있습니다.

핵심 포인트
  • • theme은 사이트 전체 레이아웃 담당
  • • skin은 개별 모듈의 출력 템플릿
  • • plugin은 기능 확장 모듈
답변에 넣으면 좋은 키워드
theme skin plugin 레이아웃 템플릿 모듈
실무에서는

클라이언트 요구사항에 따라 게시판 디자인만 변경하거나 전체 사이트 리뉴얼을 할 때 어느 폴더를 수정할지 결정하는 상황

Follow-up 질문

커스텀 스킨을 만들 때 기본 스킨을 복사해서 수정하는 것이 권장되는 이유는 무엇인가요?

2 회원 관리
Easy

Q. 그누보드6에서 회원 정보를 조회할 때 사용하는 get_member 함수의 역할과 반환값에 대해 설명해주세요.

함수가 받는 파라미터와 어떤 형태로 회원 정보를 반환하는지 생각해보세요.

A. 모범답안

get_member 함수는 회원 아이디를 파라미터로 받아 해당 회원의 정보를 데이터베이스에서 조회하는 함수입니다. 반환값은 회원 테이블의 모든 필드를 포함한 연관 배열 형태이며, 회원이 존재하지 않으면 빈 배열을 반환합니다. mb_id, mb_name, mb_email, mb_level 등의 회원 정보에 접근할 수 있습니다. 주로 회원 프로필 표시, 권한 체크, 회원 정보 수정 페이지 등에서 사용됩니다.

핵심 포인트
  • • 회원 아이디로 회원 정보 조회
  • • 연관 배열 형태로 반환
  • • 회원이 없으면 빈 배열 반환
답변에 넣으면 좋은 키워드
get_member mb_id 연관배열 회원정보 데이터베이스
실무에서는

마이페이지에서 현재 로그인한 회원의 정보를 표시하거나, 특정 회원의 프로필을 조회할 때

Follow-up 질문

현재 로그인한 회원의 정보를 가져오려면 어떤 전역 변수나 방법을 사용해야 하나요?

3 게시판 설정
Medium

Q. 그누보드6에서 게시판을 생성할 때 설정하는 bo_table과 게시판 설정 정보가 저장되는 테이블, 그리고 실제 게시글이 저장되는 테이블의 관계를 설명해주세요.

게시판 설정 정보와 게시글 데이터가 각각 어떤 테이블에 저장되는지 생각해보세요.

A. 모범답안

bo_table은 게시판을 식별하는 고유 아이디로, 영문과 숫자 조합으로 생성됩니다. 게시판의 설정 정보(제목, 권한, 스킨 등)는 g6_board 테이블에 저장되며, bo_table을 키로 관리됩니다. 실제 게시글 데이터는 g6_write_테이블명 형식으로 동적으로 생성되는 테이블에 저장됩니다. 예를 들어 bo_table이 notice라면 게시글은 g6_write_notice 테이블에 저장되며, 이를 통해 게시판마다 독립적인 데이터 관리가 가능합니다.

핵심 포인트
  • • bo_table은 게시판 고유 식별자
  • • 게시판 설정은 g6_board 테이블에 저장
  • • 게시글은 g6_write_게시판명 형식의 별도 테이블에 저장
답변에 넣으면 좋은 키워드
bo_table g6_board g6_write 동적 테이블 게시판 설정
실무에서는

여러 게시판을 운영하면서 데이터베이스 구조를 이해하고, 게시판별 데이터를 조회하거나 백업할 때

Follow-up 질문

하나의 게시판에서 특정 카테고리별로 다른 스킨을 적용하려면 어떻게 해야 하나요?

4 Hook 시스템
Medium

Q. 그누보드6의 Hook(훅) 시스템이 무엇인지, 그리고 add_event_action과 run_event 함수의 역할을 설명해주세요.

코어 파일을 수정하지 않고 기능을 확장하는 방법을 생각해보세요.

A. 모범답안

Hook 시스템은 그누보드의 핵심 코드를 직접 수정하지 않고 특정 시점에 커스텀 기능을 추가할 수 있는 이벤트 기반 확장 메커니즘입니다. add_event_action 함수는 특정 이벤트 이름에 실행할 콜백 함수를 등록하는 역할을 합니다. run_event 함수는 코어의 특정 지점에서 해당 이벤트 이름으로 등록된 모든 콜백 함수를 순차적으로 실행합니다. 이를 통해 플러그인이나 테마에서 회원가입, 게시글 작성, 로그인 등의 시점에 추가 기능을 안전하게 삽입할 수 있습니다.

핵심 포인트
  • • 코어 수정 없이 기능 확장 가능
  • • add_event_action으로 콜백 함수 등록
  • • run_event로 등록된 함수들 실행
답변에 넣으면 좋은 키워드
Hook add_event_action run_event 콜백 이벤트 플러그인
실무에서는

플러그인 개발 시 회원가입 후 추가 처리나 게시글 작성 시 알림 발송 등의 기능을 구현할 때

Follow-up 질문

회원가입 직후에 자동으로 환영 메일을 발송하는 기능을 Hook으로 구현한다면 어떤 이벤트를 사용해야 하나요?

5 보안
Medium

Q. 그누보드6에서 XSS 공격을 방지하기 위해 사용하는 주요 함수들과 각각의 용도를 설명해주세요.

사용자 입력값을 출력하거나 저장할 때 사용하는 필터링 함수들을 생각해보세요.

A. 모범답안

그누보드6는 XSS 방지를 위해 여러 함수를 제공합니다. clean_xss_tags 함수는 위험한 HTML 태그와 속성을 제거하여 안전한 HTML만 허용합니다. htmlspecialchars 함수는 HTML 특수문자를 엔티티로 변환하여 스크립트 실행을 방지합니다. strip_tags 함수는 모든 HTML 태그를 제거하여 순수 텍스트만 남깁니다. 게시판 에디터 입력은 clean_xss_tags로, 일반 텍스트 출력은 htmlspecialchars로, 검색어나 제목 등은 상황에 따라 적절한 함수를 선택하여 사용해야 합니다.

핵심 포인트
  • • clean_xss_tags는 위험 태그 제거 후 안전한 HTML 허용
  • • htmlspecialchars는 특수문자 엔티티 변환
  • • 입력/출력 상황에 따라 적절한 함수 선택
답변에 넣으면 좋은 키워드
XSS clean_xss_tags htmlspecialchars strip_tags 보안 필터링
실무에서는

게시판 댓글이나 사용자 프로필 입력 시 악성 스크립트 삽입을 방지하여 사이트 보안을 유지할 때

Follow-up 질문

사용자가 입력한 HTML을 그대로 허용해야 하는 경우와 완전히 차단해야 하는 경우의 예시를 들어주세요.

6 데이터베이스
Medium

Q. 그누보드6에서 DB 쿼리를 실행할 때 sql_query, sql_fetch, sql_fetch_array 함수의 차이점과 각각의 사용 시나리오를 설명해주세요.

쿼리 실행과 결과 조회를 구분하여 생각해보세요.

A. 모범답안

sql_query 함수는 SQL 쿼리를 실행하고 결과 리소스를 반환하는 기본 함수로, SELECT, INSERT, UPDATE, DELETE 모두 사용 가능합니다. sql_fetch 함수는 쿼리 결과에서 한 행을 연관 배열로 가져오며, 단일 레코드 조회에 적합합니다. sql_fetch_array 함수는 결과의 모든 행을 배열로 반환하여 여러 레코드를 한 번에 가져올 때 사용합니다. 일반적으로 sql_query로 쿼리를 실행한 후, 단일 행이면 sql_fetch, 다중 행이면 while문과 sql_fetch 또는 sql_fetch_array를 사용합니다.

핵심 포인트
  • • sql_query는 쿼리 실행 및 리소스 반환
  • • sql_fetch는 단일 행을 연관 배열로 반환
  • • sql_fetch_array는 모든 결과를 배열로 반환
답변에 넣으면 좋은 키워드
sql_query sql_fetch sql_fetch_array 연관배열 데이터베이스
실무에서는

게시판 목록 조회, 회원 정보 검색, 통계 데이터 집계 등 다양한 데이터베이스 작업을 수행할 때

Follow-up 질문

SQL Injection 공격을 방지하기 위해 사용자 입력값을 쿼리에 사용할 때 어떤 함수를 사용해야 하나요?

7 페이지 처리
Easy

Q. 그누보드6에서 게시판 목록의 페이징 처리를 위해 사용하는 get_paging 함수의 주요 파라미터들을 설명해주세요.

페이징에 필요한 정보는 전체 게시글 수, 현재 페이지, 페이지당 글 수 등이 있습니다.

A. 모범답안

get_paging 함수는 페이징 네비게이션 HTML을 생성하는 함수입니다. 주요 파라미터로는 현재 페이지 번호, 전체 레코드 수, 페이지당 표시할 레코드 수, 페이지 링크에 사용할 기본 URL 등이 있습니다. 이 함수는 이전/다음 버튼, 페이지 번호 링크, 처음/마지막 페이지 이동 등의 HTML을 자동으로 생성합니다. 반환된 HTML을 템플릿에 출력하면 사용자가 페이지를 쉽게 이동할 수 있는 인터페이스가 제공됩니다.

핵심 포인트
  • • 페이징 네비게이션 HTML 자동 생성
  • • 현재 페이지, 전체 수, 페이지당 수 등을 파라미터로 받음
  • • 이전/다음, 페이지 번호 링크 포함
답변에 넣으면 좋은 키워드
get_paging 페이징 pagination 네비게이션 페이지 처리
실무에서는

게시판이나 회원 목록에서 많은 데이터를 페이지 단위로 나누어 표시할 때

Follow-up 질문

모바일 환경에서 페이징 표시 개수를 PC와 다르게 설정하려면 어떻게 해야 하나요?

8 파일 업로드
Medium

Q. 그누보드6에서 게시글에 첨부된 파일 정보를 조회하고 다운로드 링크를 생성하는 방법을 설명해주세요.

게시글 번호를 기준으로 파일 정보를 가져오는 함수와 다운로드 경로를 생각해보세요.

A. 모범답안

게시글의 첨부파일 정보는 get_file 함수를 사용하여 조회하며, 게시판 테이블명과 게시글 번호를 파라미터로 전달합니다. 반환되는 배열에는 파일명, 파일 크기, 다운로드 수, 파일 경로 등의 정보가 포함됩니다. 다운로드 링크는 /bbs/download.php 스크립트에 bo_table과 wr_id, 파일 번호를 쿼리스트링으로 전달하여 생성합니다. 파일 다운로드 시 권한 체크와 다운로드 카운트 증가가 자동으로 처리됩니다.

핵심 포인트
  • • get_file 함수로 첨부파일 정보 조회
  • • download.php에 bo_table, wr_id, 파일번호 전달
  • • 권한 체크와 다운로드 카운트 자동 처리
답변에 넣으면 좋은 키워드
get_file download.php 첨부파일 bo_table wr_id 파일 다운로드
실무에서는

게시판 상세 페이지에서 첨부파일 목록을 표시하고 다운로드 기능을 제공할 때

Follow-up 질문

특정 회원 등급 이상만 파일을 다운로드할 수 있도록 제한하려면 어떻게 해야 하나요?

9 캐시 시스템
Medium

Q. 그누보드6에서 최신글이나 인기글 등을 캐싱하는 이유와 캐시 파일이 저장되는 위치, 그리고 캐시를 삭제해야 하는 상황을 설명해주세요.

데이터베이스 부하를 줄이는 방법과 데이터 갱신 시점을 생각해보세요.

A. 모범답안

그누보드6는 자주 조회되는 최신글, 인기글 등의 데이터를 캐싱하여 데이터베이스 쿼리 부하를 줄이고 페이지 로딩 속도를 향상시킵니다. 캐시 파일은 data/cache 디렉토리에 저장되며, 설정된 시간 동안 유지됩니다. 새 게시글 작성, 게시글 수정/삭제, 게시판 설정 변경 등의 상황에서는 캐시를 삭제하여 최신 데이터가 반영되도록 해야 합니다. 관리자 페이지의 캐시 삭제 메뉴나 delete_cache_file 함수를 사용하여 캐시를 제거할 수 있습니다.

핵심 포인트
  • • DB 부하 감소와 속도 향상을 위한 캐싱
  • • data/cache 디렉토리에 캐시 파일 저장
  • • 데이터 변경 시 캐시 삭제 필요
답변에 넣으면 좋은 키워드
캐시 cache data/cache delete_cache_file 성능 최적화
실무에서는

메인 페이지에 여러 게시판의 최신글을 표시할 때 매번 쿼리하지 않고 캐시를 활용하여 성능을 개선할 때

Follow-up 질문

캐시 유효 시간을 너무 길게 설정했을 때 발생할 수 있는 문제는 무엇인가요?

10 URL 라우팅
Hard

Q. 그누보드6에서 짧은 주소(short URL) 기능이 동작하는 원리와 .htaccess 파일의 역할, 그리고 이 기능의 장단점을 설명해주세요.

Apache의 mod_rewrite와 URL을 내부적으로 변환하는 과정을 생각해보세요.

A. 모범답안

짧은 주소 기능은 Apache의 mod_rewrite 모듈과 .htaccess 파일을 활용하여 구현됩니다. 사용자가 /board/notice 같은 짧은 URL로 접근하면, .htaccess의 RewriteRule이 이를 /bbs/board.php?bo_table=notice 형태로 내부적으로 변환합니다. 이를 통해 SEO 친화적인 URL 구조를 만들 수 있고, 사용자가 URL을 쉽게 기억할 수 있습니다. 장점은 검색엔진 최적화와 사용자 경험 향상이며, 단점은 서버 설정이 필요하고 nginx 등 다른 웹서버에서는 별도 설정이 필요하다는 점입니다. 또한 URL 라우팅 규칙이 복잡해질 수 있습니다.

핵심 포인트
  • • mod_rewrite와 .htaccess로 URL 변환
  • • SEO 최적화와 사용자 경험 향상
  • • 서버 설정 필요 및 웹서버별 설정 상이
답변에 넣으면 좋은 키워드
짧은주소 short URL mod_rewrite .htaccess RewriteRule SEO
실무에서는

검색엔진 노출을 개선하고 사용자 친화적인 URL 구조를 만들기 위해 짧은 주소 기능을 활성화할 때

Follow-up 질문

nginx 웹서버에서 그누보드6의 짧은 주소 기능을 사용하려면 어떤 설정이 필요한가요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!