Mint Flavor Chocolate DEV
기술면접모음-1 본문
에이스프로젝트 기술 면접
- F/W
Spring을 사용하면서 어떤 점이 좋았는가?
MyBatis를 사용하면서 어떤 점이 좋았는가?
DI 에 대해 설명해 보세요.
AOP 에 대해 설명해 보세요.
- JAVA
JAVA를 사용하면서 좋았던 점 --> 자바 특징 : 플랫폼 독립적(O/S, DB, WAS), 풍부한 API
Collection 설명(동적배열): Array(정적배열)
- DB
본인개발한 프로젝트인 "시설물 예약 시스템"에서 사용했던 테이블이 몇개인가? 또 관계에대해 설명해라 Redis 에 대해서 아는가?
본인개발한 프로젝트에서 게시판 답글처리 어떻게 했는지?
==> 테이블 관계
==> 페이징처리는 어떻게 : 부모글, 답글 관계
- 서버/네트워크
본인개발한 프로젝트인 "다중 채팅 프로그램" 포트폴리오를보고
==> 어떻게 구현을 하였는가 ( 멀티스레드, fork, lock(동기화) 대답)
-
자료구조/알고리즘
큐 설명
스택 설명
연결리스트 설명
이중연결리스트 설명 -
기타
자기소개
학교수업중에서 원서로 공부해 본적이 있는가?
API 영어로 되어있는데 읽고 사용 가능한가?
개발하다가 모르는 것이 있으면 어떻게 해결하나? ==> API(도움말, 문서, 책), 지인, 웹검색 등 )
가장 흥미 있게 들었던 수업은?
DAsP 자격증은 왜 취득했는가
리눅스 마스터 자격증은 왜 취득했는가
아카데미 인원이 몇명이고 그 중 실력이 몇번째 라고 생각하는가?
포트폴리오를 보고 자신이 담당했던 기술들에 대해 설명
팀프로젝트 진행시에 팀장을 맡았는데...힘들었던점은 무엇이었는가??
팀프로젝트 진행시에 팀장 선출방법은 어떻게 진행한것인가?
최근에 스스로 노력해서 공부하고 있는것이 무엇인가? ==> 비콘기반의 프로젝트
실기 구현
-- 백지용지에서 메서드 시그니처(이름, 반환타입, 아규먼트)만 제공됨
-- 코드 구현 완성
-- 실기 총4문제 시간제한은 없었으나 보통 30분정도 걸린다고 함.
-- 25분정도 걸린것 같음
1>
1
12
123
.
.
123..n 구현하기
2> 숫자를 입력 받고 숫자를 뒤집기 ( ex ) 54321 -> 12345
==> atoi및 타입 캐스팅 없이 오직 연산으로만 구현
3> 버블정렬 구현 : 올림차순, 내림차순
4> 테이블 2개를 조인해서 2015/10/10 ~ 2015/10/20사이의 어떤 속성값을 sum() 총계를 구해서
teamid 와 teamname 과 함게 조회 하는 쿼리문 작성
컬럼명 between '2015/10/10' and '2015/10/20';
==> 제시된 문자와 비슷하게 오라클 계정 정보로 문제 변경해봄 (^^) ==> 부서(dept) : 부서번호, 부서명, 위치,
==> 직원(emp) : 사번, 입사일, 급여, [수당(null) ==> nvl(comm, 0)]
==> 입사일자가 2015/10/10 ~ 2015/10/20 사이인 부서별 급여 총액하고, 부서번호, 부서명
스펙트라 기술면접
-- 백지제공해서 직접 손으로 코딩
-- 자바 2문제, 자바스크립 & CSS 1문제, SQL구문 1문제, 영어독해 A4 3장
-- 전체 문제 합쳐서 90분 제한
자바문제1:
- 자바 main() 메서드에서 아규먼트 전달받아서 성적관리 프로그램 작성
- 입력값 : 이름, 국어점수, 영어점수, 수학점수
- 명령창 수행방법: java Test 홍길동 100 90 95
- 아규먼트 잘못 입력시에는 사용방법 오류메세지로 출력 처리할것
- 수행결과 화면: 이름 : 홍길동 국어 : 100, 영어 : 90, 수학 : 95 총계 : 285, 평균 : 95
자바문제2:
-- 도형그리기 : Shape(도형), Circle(원형), Rectangula
-- 추상화: 인터페이스, 추상클래스로 설계
-- 서브클래스에서 재정의해서 결과 출력
-- 수행결과 화면:
원형을 그립니다.
사각형을 그립니다.
삼각형을 그립니다.
자바스크립트 & CSS 문제:
-- 제공된 html 페이지 코드 : 변경전 코드
<div id="mngLayer" style="backgroun-color:#000000;width:200px;height:400px">
안녕하세요.
</div>
-- 변경후 html 페이지 코드
<div id="mngLayer" style="backgroun-color:#99999;width:400px;height:200px">
안녕하세요. 신입지원자 홍길동입니다.
</div>
-- 변경 후 화면이 될 수 있도록 자바스크립트 및 CSS를 적용하여 자바스크립트 함수 작성할것.
SQL 문제
-- 테이블 조인
-- 테이블1에는 4개의 컬럼중에서 하나의 레코드의 컬럼에 null
-- 테이블2에는 3개의 컬럼은 모두 값을 갖고 있음.
-- 조인컬럼(FK)를 기준으로 해서 null정보도 함께 검색하도로 SQL 구문 작성
-- 조회시에서 컬럼명 대신에 alias로 출력
-- 정렬 조회 출력
마크로젠
1.동적배열이란 무엇인가? 정의하고 선언하는방법 코딩
=> 정적 배열 (Array)
=> 선언
=> 생성 : 배열크기지정 ==> 배열크기를 생성후 변경불가 ( 배열의 단점 ) ==> 해결책 Collection 가변길이
=> 초기화
=> 동적배열 ( Collection : Set, List, Map, Queue )
=> Collection ( 자바의 컬렉션이란 객체들을 모아놓고 제어, 관리, 하기 위한 자료구조 )
ArrayList<String> list = new ArrayList<list>();
list.add("홍길동");
list.add("강감찬");
HashMap<String,String> hashmap = new HashMap<String,String>();
hashmap.put("user01", "홍길동");
hashmap.put("user02", "강감찬");
HashSet<String> set = new HashSet<String>();
set.add("홍길동");
set.add("강감찬");
정적배열-크기고정
1.선언
2.생성 ==> 배열크기지정 ==> 배열크기를 생성후 변경불가 ==> 단점 ==> 해결책 Collection: 필요시에 자동 증가
3.초기화
String[] names = new String[3];
names[0] = "홍길동";
names[1] = "김범연";
names[2] = "김성학";
// jdk 1.4
for(int i=0; i < names.length; i++) {
// 출력형식 :
// 1 : 홍길동
// 2 : 김번연
System.out.print((i+1) + " : ");
System.out.println(names[i]);
}
// jdk 1.5
for(String data : names) {
System.out.println(data);
}
2.HashMap
==> 원래 타입으로 변환 출력
==> 자바 코드 작성
List<Tempty>에 홍길동이라는 데이터를 넣고 for문돌려서 출력했을때
Tempty tempty =
HashMap ( Object )
HashMap<T, T> hashmap = new HashMap<T, T>({
hashmap.put(
);
}
3.Connection pool 개념
==> JDBC : 데이터베이스에 접근하여 SQL문을 실행하기 위한 자바 라이브러리를 말한다.
==> 데이터베이스의 연결객체를 미리 만들어서 필요시 제공하고, 자원반납
==> 자원의 효율적 사용, 응답속도 빠름(reponse time)
==> api : javax.sql.DataSource, javax.naming.Context(JNDI 네이밍서비스)
4.Multi Thread 사용시 dead lock 방지 방법 :
-- 교착상태 발생
-- dead lock 발생시 막기위한 방법
-- 교착상태가 어느상태에서 발생하는지
-- synchronized(동기화처리)
==> 스레드(Thread) : 하나의 프로그램 내에서 여러 개의 실행 흐름을 두기 위한 모델
==>여러개의 쓰레드를 사용하여 하나의 수행업무를 동시에 처리함으로 컴퓨터의 처리속도를 증가시키는 프로세스 제어기법.
CPU가 매우짧은 단위시간인 시분할 방식으로 복수의 Thread에 차례로 활당하여 복수의 처리가 동시에 이루어지는 것 처럼보임
==> 동기화.( 깃발! )
==> dead lock :
교착상태는 동일한 자원을 공유하고 있는 두 개의 컴퓨터 프로그램들이,
상대방이 자원에 접근하는 것을 사실상 서로 방해함으로써,
두 프로그램 모두 기능이 중지되는 결과를 낳는 상황을 말한다.
==> 해결방법 : 1. 타임아웃을 주어 일정시간을 주어 반응이 없으면 롤백시키는 타임아웃을 설정 ( SET LOCK_TIMEOUT 10000 )
2. 프로시저의 우위를 설정 ( 우위가 낮은 프로시저를 먼저 취소 시킨다 )
우선 순위의 레벨은 Low와 Normal로 나타낼수 있고 Priority라는것을 이용하여 설정 할수가 있다.
SET DEADLOCK_PRIORITY LOW
go
3. Kill 명령어를 통해 강제 종료.
==> 예방방법 : 트랜잭션의 구문의 처리 순서를 일치 시킨다.
5.인라인뷰 ( 의미와 특징 )
==>FROM절에 오는 Subquery이다.
==>FROM절에서 원하는 데이터를 조회하여 가상의 집합을 만들어 조인을 수행하거나
가상의 집합을 다시 조회 할 때 사용한다.
==>FROM절에서 임시 공간에 테이블을 생성하여 사용하는 뷰와 비슷한 저장형태
6.하나의 스키마(테이블) 주어지고 데이터값 5개 insert 레코드 추가.
(1) View 이용 :
(2) 5개의 값을 한개의 쿼리를 이용해서 삽입.( 멀티플 인서트 )
insert all
into test01 values('김성학')
into test01 values('부석민')
into test01 values('자취방')
select * from dual;
- 트리거의 특징
==> 데이터베이스에 변경(change)이 일어났을 때 DBMS에 의해 자동으로 실행되는 PL/SQl을 말한다.
==> 데이터가 변경되는 중요한 테이블에 트리거를 설정하면 문제가 발생했을때 데이터 추적이 가능하지만
너무많이 사용하면 성능이 저하된다
create trigger 트리거명(before:after)
triggering-event on 테이블명
for each row
where 조건
pl/sql block;
- interface 4개 작성
-- 구현클래스 재정의
-- basic method(concrete class ==> new 클래스() 직접 객체 생성 사용 클래스)
-- 2개를 만들고.... 어쩌고..?
-- ## 인터페이스 :
-- 추상메서드, 상수로만 구성된 클래스 노드
-- 공개용 api 구성(jdbc ==> 데이터베이스 벤더들을 위한 공통 사용법(메서드 시그니처(형식))
-- 다중구현 : 단일 상속을 제공하므로 다른클래스를 상속받아야 되는 경에는 인터페이스로 설계 :
-- 형식을 표준화 목적
public interface A1 {
public void a();
}
public interface A2 {}
public interface A3 {}
public interface A4 {}
// 추상클래스 : 클래스멤버 + [추상메서드 선택] , 직접 객체 생성 불가, 서브클래스 상속 사용
==> 추상메서드 존재시에 재정의
==> 추상메서드가 존재하지 않아도 상속을 강제하기 위한 목적으로 설계하기도함 (예: HttpServlet)
public abstract class B1 {}
public abstract class B2 {}
// concrete class : 직접 객체 생성 가능 클래스(일반적으로 얘기하는 클래스)
public class C1 extends B1 implements A1, A2, A3, A4 { }
public class C2 {}
9.인터페이스 특징 ( 객관식 문제 ) 메서드형식의 표준화. - 사용법의 표준화.
10.mybatis란
- xml에 sql을 정의해서 코드와 sql를 분리하여 독립성을 향상 시키고 Jdbc와 sql을 유지하면서 더 적은 코드로 생상선을 향상 시킬 수 있다.
11.Spring란? - DI 및 AOP기반 컨테이너이자 프레임워크이며 객체의 라이프사이클을 컨테이너가 관리하며 제어반전이 가장 큰 특징이고
mvc패턴을 통해 유지보수가 편리한 프레임 워크입니다.
12.형상관리
13.자신의 개발한 프로젝트 완벽히 이해하기 ( 개발하지 않은 기술쪽도 알고있어야 한다 )
14.개발에 적용한 기술셋 이해하기 ( ajax, jquery, jsp, 전부다...)
커머스웨어 기술 면접
-
자바스크립트 수행 결과
<script type="text/javascript"> var result; function test(paramData) { var localCount = 100; function sum() { result = localCount * paramData; document.write("localCount : " + localCount); document.write("<p>"); document.write("paramData : " + paramData); document.write("<p>"); document.write("result : " + result); document.write("<p>"); // 2. return result; } //sum(); return sum(); } // 1. 결과는 ? //test(25); // 2. 결과는 ? var actualResult = test(25) + 30; document.write("actualResult : " + actualResult); // 3. //sum(); </script> </head> <body> <!-- localCount : 100 paramData : 25 result : 2500 actualResult : 2530 --> </body> </html>
-
문자열 생성에 대한 비교 수행 결과
-- 기본형저장소는 heap area내의 literal pool 저장 : 같은 문자열은 참조
-- new 문자열 생성시에는 heap area 생성할때마다 새로이 저장String name1 = "hello"; String name2 = "hello"; String name3 = new String("hello"); String name4 = new String("hello"); String name5 = name1; if(name1 == name2) { System.out.println("A"); // 출력 } if(name1.equals(name2)) { System.out.println("B"); // 출력 } else if(name1.equals(name2)) { System.out.println("C"); } else { System.out.println("D"); }
-
객체와 변수 비교 : == (equal operator) , equals()
-
HashMap과 HashSet의 차이점 기술
-
Exception 출력 결과 쓰기
-
war 파일이 무엇인지?
-
자바스크립트 dom 형태로 쓰시오. -- 다음 태그에서 text를 출력하라
<form> <input type="text" id="TextId"> </form> ==> String textData = document.getElementById("TextId").value;
-
외부 조인 SQL select 쿼리문 쓰기 -- 직원 테이블, 부서 테이블 -- 부서를 배정받지 못한 사원의 정보도 함께 출력
-
URL, http 메서드 쓰기
-
리눅스 chgroup 777 키워드 문제
기술 시험
-- Eclipse, EditPlus, Java API 제공
-- 자바 프로그램 구현
-
HashMap을 사용하여 전화번호관리 프로그램을 만들어라
-- 삽입, 삭제, 한사람 검색, 전체 검색, 삭제 기능이 가능하게 하라.
-- 모든 입력은 콘솔에서 입력 받음
-- 삽입 : 이름, 전화번호, 주소를 입력 받아라
-- 이름이 같으면 삽입이 안되게 중복검증 처리하라 -
자바스크립트를 이용하여 계산기를 만들어라.
-- 화면에 숫자버튼, 사칙연산 버튼, 초기화 버튼, 결과조회 버튼
-- 텍스트칸에 연산결과 출력 -
게임 만드는 문제
한화 S&C 기술
-- 메모장 제공
-- 제한시간 10분
-- 메서드 호출 수행문을 제공하고
-- 제공 수행문을 참고해서 제시된 4개의 메서드 구현
-- 실기 시험 종료 후 코드에 대한 설명함
-- 팀장 면접 실시
-
배열[] + 문자열 연결 출력하는 메서드 구현
-
저장된 "비밀번호" 와 입력받은 문자열 비교하는 메서드 구현
-
숫자받아서 3의배수이면서 3이 들어가지 않으면 값을 반환하는 메서드 구현
-
시간이 부족해서 문제조차도 볼 수 없었음
하나INS 기술
-
자기소개 1분
-
보안 검증 방법에 대해서 설명하시오.
-
Stack과 heep 영역을 본인이 사용하는 프로그램을 통해서 설명하시오.
-
캡스톤 디자인이란 무엇인가?
-
본인이 개발한 프로젝트에 대한 설명을 하시오.
-
다른면접자가 화면캡처 사용해서 프로젝트 개발했다고 했는데.. 이에대해서 화면 캡처 시 사용하는 기술적인 측면은 무엇인가?
-
기업의 대한 설명 / 어디로 이사를 가는지에 대한 설명 / 대표이사 설명
==> 본인 면접보러 가는 회사에 홈페이 방문해서
==> 회사에 대한 기업이념, 대표이사 이름, 회사 위치(사무실)
==> 회사에 이슈화된 기사등 검색해서 숙지할것..반드시..!!! -
금융권에서 사용하고 있는 핀 태크란 무엇인가?
-- 정의
-- 이용하는 곳
-- 내가 핀 테크를 활용할 수 있는것이 무엇있을까(창의성 요구됨) -
현재 금융에 가장 혁신적인 것을 무엇이라고 생각을 하는가?
-
본인이 해본 테스트 방법은 무엇인가?
-
이영진이 질문시 해킹해보았다고 답을 한 후에 이에 대한 추가 질문 ==> 본인이 해본 해킹 기술은 무엇인가?
-
만들었던 프로젝트에 대한 기술 셋을 어떻게 사용을 하였는가? --> 자세하게 설명
-
클라우드를 이용해서 만들 수 있는 상품에 대해서 본인의 생각을 말해주세요.
-
PM으로써 했던 역할이 무엇인가?
-
본인이 진행했던 프로젝트를 하면서 아쉬웠던 점이 무엇인가?
-
Index의 값이 무엇인가 ?
-
Parameter의 차이점 선언을 통해서 그 값을 가지고 온다. 즉, 선언을 함과 동시에 저장영역에 그 값이 저장이 되고 그 값을 주소를 통해서 가지고 온다. 이때 C언어의 경우에는 주소의 값을 통해서 값을 가지고 오는 것이다.
모비젠 기술
-- 소켓 통신 다중 접속 방식을 할 수 있는 방법은 무엇인가?
-- Thread를 이용한 다중 접속 방식은 무엇인가?
-- 비콘을 통한 프로그램 통신 방식은 무엇인가?
-- 자신의 프로젝트를 이용해서 우리 회사에 적용할 수 있는 방법은 무엇인가?
-- 조인 함수를 말해주세요.
-- HashMap Class 란 무엇인가?
-- 보안 검증 방법의 종류
-- 해킹 프로그램 종류
BGF리테일 기술
- IoT 관련된 보안시스템 개선에 대한 본인 생각을 기술하시오.
-- 알고 있는 모든 기술관련 키워드를 사용해서 설명
쿠팡코딩문제 기술
-- 종이 제공하고, 손코딩(날코딩) 구현
-- 1번, 2번 : 55분 진행
-- 3번 : 50분 진행
-
괄호가 겹치지 않게 나열이 되도록. 예를 들어 [ { ( < > ) } < ( ) > ] 이런 식이면 true를 반환하고,
[ { ( } ) < [ ] > ] 이런 식으로 괄호가 겹친 경우에는 false를 반환한다.
괄호의 종류는 [], {}, (), <> 이렇게 네 가지 뿐.
입력으로 들어올 수 있는 것은 공백(space)와 괄호뿐이라고 가정했을 때, 겹치지 않도록 검증하는 알고리즘을 구현하시오.boolean isValid(String input) { //TODO }
-
잘 기억 안 나는데, 사용자가 물품을 고르면 그 물품들이 하나의 카테고리로 묶임.
다른 사용자가 그 카테고리의 물품 중 하나라도 포함이 되면,
그 사용자가 고른 모든 물품이 같이 하나의 카테고리로 묶임. 이런 거 ..
주문 클래스를 구현하고(2-1), 카테고리 묶는 알고리즘 구현하기(2-2) -
A,B,C는 물류 창고를 의미하고, 나무, 마르코, 마롱은 고객을 의미함.
각각의 선에 있는 숫자는 걸리는 시간을 의미함. 고객은 여러 물류 창고에서 주문을 할 수 있음.
예를 들어 나무는 A 물류 창고, 마롱은 A, B 물류 창고에서 주문을 할 수 있음.
이러한 상황의 주문정보와 위 그래프를 표현하는 데이터(클래스) 구조를 표현하고(3-1),
입력된 주문 정보와 데이터(클래스) 구조를 활용해서 최소 시간이 걸리는 경로를 찾아내어,
그 경로와 걸리는 시간을 출력하는 알고리즘을 구현하시오.(3-2)