Mint Flavor Chocolate DEV

기술면접모음-1 본문

기술면접정리

기술면접모음-1

츠르e 2017. 8. 22. 09:27

 

에이스프로젝트 기술 면접

  • 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:

  1. 자바 main() 메서드에서 아규먼트 전달받아서 성적관리 프로그램 작성
  2. 입력값 : 이름, 국어점수, 영어점수, 수학점수
  3. 명령창 수행방법: java Test 홍길동 100 90 95
  4. 아규먼트 잘못 입력시에는 사용방법 오류메세지로 출력 처리할것
  5. 수행결과 화면: 이름 : 홍길동 국어 : 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;  
  1. 트리거의 특징

==> 데이터베이스에 변경(change)이 일어났을 때 DBMS에 의해 자동으로 실행되는 PL/SQl을 말한다.
==> 데이터가 변경되는 중요한 테이블에 트리거를 설정하면 문제가 발생했을때 데이터 추적이 가능하지만
너무많이 사용하면 성능이 저하된다

create trigger 트리거명(before:after) 
triggering-event on 테이블명
for each row
where 조건
pl/sql block;
  1. 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, 전부다...)

커머스웨어 기술 면접

  1. 자바스크립트 수행 결과

    <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>
    
  2. 문자열 생성에 대한 비교 수행 결과
    -- 기본형저장소는 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");
    }
    
  3. 객체와 변수 비교 : == (equal operator) , equals()

  4. HashMap과 HashSet의 차이점 기술

  5. Exception 출력 결과 쓰기

  6. war 파일이 무엇인지?

  7. 자바스크립트 dom 형태로 쓰시오. -- 다음 태그에서 text를 출력하라

    <form>
        <input type="text" id="TextId"> 
    </form>
    
    ==> String textData = document.getElementById("TextId").value;
    
  8. 외부 조인 SQL select 쿼리문 쓰기 -- 직원 테이블, 부서 테이블 -- 부서를 배정받지 못한 사원의 정보도 함께 출력

  9. URL, http 메서드 쓰기

  10. 리눅스 chgroup 777 키워드 문제

기술 시험

-- Eclipse, EditPlus, Java API 제공
-- 자바 프로그램 구현

  1. HashMap을 사용하여 전화번호관리 프로그램을 만들어라
    -- 삽입, 삭제, 한사람 검색, 전체 검색, 삭제 기능이 가능하게 하라.
    -- 모든 입력은 콘솔에서 입력 받음 
    -- 삽입 : 이름, 전화번호, 주소를 입력 받아라
    -- 이름이 같으면 삽입이 안되게 중복검증 처리하라

  2. 자바스크립트를 이용하여 계산기를 만들어라.
    -- 화면에 숫자버튼, 사칙연산 버튼, 초기화 버튼, 결과조회 버튼
    -- 텍스트칸에 연산결과 출력

  3. 게임 만드는 문제

한화 S&C 기술

-- 메모장 제공
-- 제한시간 10분
-- 메서드 호출 수행문을 제공하고
-- 제공 수행문을 참고해서 제시된 4개의 메서드 구현
-- 실기 시험 종료 후 코드에 대한 설명함
-- 팀장 면접 실시

  1. 배열[] + 문자열 연결 출력하는 메서드 구현

  2. 저장된 "비밀번호" 와 입력받은 문자열 비교하는 메서드 구현

  3. 숫자받아서 3의배수이면서 3이 들어가지 않으면 값을 반환하는 메서드 구현

  4. 시간이 부족해서 문제조차도 볼 수 없었음

하나INS 기술

  1. 자기소개 1분

  2. 보안 검증 방법에 대해서 설명하시오.

  3. Stack과 heep 영역을 본인이 사용하는 프로그램을 통해서 설명하시오.

  4. 캡스톤 디자인이란 무엇인가?

  5. 본인이 개발한 프로젝트에 대한 설명을 하시오.

  6. 다른면접자가 화면캡처 사용해서 프로젝트 개발했다고 했는데.. 이에대해서 화면 캡처 시 사용하는 기술적인 측면은 무엇인가?

  7. 기업의 대한 설명 / 어디로 이사를 가는지에 대한 설명 / 대표이사 설명
    ==> 본인 면접보러 가는 회사에 홈페이 방문해서
    ==> 회사에 대한 기업이념, 대표이사 이름, 회사 위치(사무실)
    ==> 회사에 이슈화된 기사등 검색해서 숙지할것..반드시..!!!

  8. 금융권에서 사용하고 있는 핀 태크란 무엇인가?
    -- 정의
    -- 이용하는 곳
    -- 내가 핀 테크를 활용할 수 있는것이 무엇있을까(창의성 요구됨)

  9. 현재 금융에 가장 혁신적인 것을 무엇이라고 생각을 하는가?

  10. 본인이 해본 테스트 방법은 무엇인가?

  11. 이영진이 질문시 해킹해보았다고 답을 한 후에 이에 대한 추가 질문 ==> 본인이 해본 해킹 기술은 무엇인가?

  12. 만들었던 프로젝트에 대한 기술 셋을 어떻게 사용을 하였는가? --> 자세하게 설명

  13. 클라우드를 이용해서 만들 수 있는 상품에 대해서 본인의 생각을 말해주세요.

  14. PM으로써 했던 역할이 무엇인가?

  15. 본인이 진행했던 프로젝트를 하면서 아쉬웠던 점이 무엇인가?

  16. Index의 값이 무엇인가 ?

  17. Parameter의 차이점 선언을 통해서 그 값을 가지고 온다. 즉, 선언을 함과 동시에 저장영역에 그 값이 저장이 되고 그 값을 주소를 통해서 가지고 온다. 이때 C언어의 경우에는 주소의 값을 통해서 값을 가지고 오는 것이다.

모비젠 기술

-- 소켓 통신 다중 접속 방식을 할 수 있는 방법은 무엇인가?
-- Thread를 이용한 다중 접속 방식은 무엇인가?
-- 비콘을 통한 프로그램 통신 방식은 무엇인가?
-- 자신의 프로젝트를 이용해서 우리 회사에 적용할 수 있는 방법은 무엇인가?
-- 조인 함수를 말해주세요.
-- HashMap Class 란 무엇인가?
-- 보안 검증 방법의 종류
-- 해킹 프로그램 종류

BGF리테일 기술

  1. IoT 관련된 보안시스템 개선에 대한 본인 생각을 기술하시오.
    -- 알고 있는 모든 기술관련 키워드를 사용해서 설명

쿠팡코딩문제 기술

-- 종이 제공하고, 손코딩(날코딩) 구현
-- 1번, 2번 : 55분 진행
-- 3번 : 50분 진행

  1. 괄호가 겹치지 않게 나열이 되도록. 예를 들어 [ { ( < > ) } < ( ) > ] 이런 식이면 true를 반환하고, 
    [ { ( } ) < [ ] > ] 이런 식으로 괄호가 겹친 경우에는 false를 반환한다. 
    괄호의 종류는 [], {}, (), <> 이렇게 네 가지 뿐. 
    입력으로 들어올 수 있는 것은 공백(space)와 괄호뿐이라고 가정했을 때, 겹치지 않도록 검증하는 알고리즘을 구현하시오.

    boolean isValid(String input) {
        //TODO
    
    }
    
  2. 잘 기억 안 나는데, 사용자가 물품을 고르면 그 물품들이 하나의 카테고리로 묶임. 
    다른 사용자가 그 카테고리의 물품 중 하나라도 포함이 되면, 
    그 사용자가 고른 모든 물품이 같이 하나의 카테고리로 묶임. 이런 거 .. 
    주문 클래스를 구현하고(2-1), 카테고리 묶는 알고리즘 구현하기(2-2)

  3. A,B,C는 물류 창고를 의미하고, 나무, 마르코, 마롱은 고객을 의미함. 
    각각의 선에 있는 숫자는 걸리는 시간을 의미함. 고객은 여러 물류 창고에서 주문을 할 수 있음. 
    예를 들어 나무는 A 물류 창고, 마롱은 A, B 물류 창고에서 주문을 할 수 있음. 
    이러한 상황의 주문정보와 위 그래프를 표현하는 데이터(클래스) 구조를 표현하고(3-1), 
    입력된 주문 정보와 데이터(클래스) 구조를 활용해서 최소 시간이 걸리는 경로를 찾아내어, 
    그 경로와 걸리는 시간을 출력하는 알고리즘을 구현하시오.(3-2)