반응형

2024 상반기 웅진IT WEB 개발 인턴십 후기

웅진의 IT를 책임지는 웅진IT의 WRMS WEB 개발 직무를 위한 공고에 지원하게 되었다. 우대사항에 JAVA 개발역량을 우대한다는 것을 보니 전형적인 한국 웹 개발이라는 느낌이 들었고 프론트엔드를 준비하는 나에게는 직무가 약간 안 맞는다는 것을 느꼈지만 자바를 배우고 약간 서비스 해본 경험을 믿고 결국 프론트도 필요할 것이라는 생각에 지원하게 되었다.

 

웅진의 WRMS는 웅진 대표 렌탈 서비스 솔루션이고,한국 렌탈 시장에서 가장 독보적이기에 지원서를 작성하면서부터 애사심이 조금씩 생겼다. ㅎㅎ

 

그렇게 어렵게 쓴 자기소개서를 제출하고 나중에 다른 회사 자기소개서를 작성하기 위해 첨삭을 받았다. 하지만 자기소개서를 다 뜯어 고치라는 말에 이전에 제출했던 여러 회사들에 제출한 자기소개서가 불안하게 느껴졌다. 불안함은 역시 현실로 이어졌고, 우수수 서류 불합격 소식이 들려왔다.

 

 

그러던 와중, 웅진에서 뜻밖의 서류합격 소식을 들었다. 야호! 웅진의 채용 프로세스는 원래 원데이 면접으로 이루어지는데 채용 프로세스가 늦어지는 바람에 한 번의 면접만 진행하기로 했다고 한다.

 

면접을 준비하며, 잡코리아, 캐치 등 여러 면접 후기를 보며 기출 면접질문을 수집하고 예상 답안을 준비해갔다. 대면 면접은 싸피 이후로 처음이라 매우매우매우 떨렸다. 면접 전날부터 유튜브 모의 면접을 반복하며 나의 면접 실력에 허탈한 웃음만 보였다. ㅠㅠ

 

면접 당일이 되고 3시까지 도착해서 15분동안은 자기소개 및 지원동기를 계속 되뇌었다. 면접은 면접관 4 : 면접자 2~3 으로 진행됐고 내 타임은 2명이었다.

 

면접을 보고 면접 복기를 해보았다.

면접 복기

기초 면접 도입

  • 자기소개
    • 열심히 달달 외운 자기소개를 얘기했다. 면접 연습을 하면서 변형 자기소개가 나올까봐 두려웠는데 전형적인 자기소개
  • 웅진에 대해서 안것과 인턴십때 할일
    • 웅진이 하는 사업들에 대해 얘기하며 도전하는 모습에 지원하게 되었고, 인턴십에서 눈에 띄는 인턴이 되겠다고 했다. ㅎㅎ

기술 면접

  • 백엔드 프로젝트경험
    • 프론트엔드 준비를 한 것을 알고 있었고, 백엔드 해봤냐길래 개인 프로젝트 진행하면서 노드, jsp 로 서버를 개발했다고 했다.
  • 데이터베이스 사용 경험
    • mysql 을 사용하며 쿼리 작성하고 원하는 데이터를 가져온 경험이 있다고 했다.
  • Spring spring boot 차이점
    • 전혀 사용해본적이 없어 모르겠고 입사해서 배우겠다고 했다. ㅎㅎ,, 모르는걸 어찌하리,,

인성 면접

  • 프로젝트 기간 중 서브 태스크를 처리하며 선배가 준 업무프로세스가 내 아이디어보다 효율적이지 못한다면 어떻게 해결할 것인가?
    • 우선은 선배가 알려준 지침서가 나오기까지 다양한 경험의 농축물일 것이기에 우선적으로 따르고 작업이 끝난이후에 나의 아이디어를 제안하고 변경할 수 있게 하겠다고 했다.
  • 새로운 개발환경이 아닌 고객사를 위한 예전 환경에서 근무할 수 있는데 어떻게 대처할지?
    • 개발자로서 레거시 환경에서도 물론 개발을 해야할 줄 알아야한다. 여기서 발전해서 신사업에 투입되고 싶다.
      • 라고 했더니, 발전해서 다른 부서로 이동할 순 있지만 예전 환경의 개발부서에서 어떻게 적응할 것인지 를 물으셨다. ㅠ
  • 스트레스 해소법
    • 그냥 운동한다고 했다! 운동하면 잡생각도 사라지고 가끔가다 좋은 아이디어가 떠오른다고 했는데 못믿으셨다.. ㅎㅎ.. 진짠데..
  • 마지막으로 궁금한 것과 입사 후 포부
    • 딱히 궁금한건 없지만 wdms 에 대해 물어봤더니 잘 설명해주셨다. 근데 뭔가 wrms에 대해 더 물어봤어야했나 싶기도..?

총평

두명이서 한꺼번에 면접을 보니 한시간이 후딱갔다. 나랑 같이 본 면접자분은 면접관들도 눈치챘듯이 면접경험이 많아 보였고 여유로워보여 대단하다는 생각이 들었다. 그래서 그런지 그 분한테 이목이 더 쏠려보였다. 내 역량이외에 인성 위주의 면접으로 진행되다보니 상당히 아쉬웠다. 그래서 기대는 안해야겠다라는 생각을 했고 결과는 역시나,,

 

뜨거운 합격 ㅠ

반응형
반응형

https://www.acmicpc.net/problem/2531

 

2531번: 회전 초밥

첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤

www.acmicpc.net

문제 설명

연속된 k 개의 초밥을 먹으면 1개의 쿠폰을 준다.

이 때, 이벤트를 참여하면서 먹을 수 있는 초밥 개수의 최댓값을 구하자.

인사이트

처음에 생각한 방법

  1. 투포인터를 사용하기 위해 deque을 사용하고 left, right를 이용해 슬라이딩 윈도우를 구현하자.
  2. 한번의 슬라이딩 윈도우 탐색을 하고나면 deque의 원소를 unorderd_set 에 옮겨 중복되는 값을 제거하고 쿠폰으로 받는 초밥의 번호가 포함되어있는지 확인해 최대 가짓수를 최신화한다.

오류 코드

#include <iostream>
#include <vector>
#include <algorithm>
#include <deque>
#include <unordered_set>
using namespace std;

int N, d, k, c;

vector<int> rail;
unordered_set<int> s;
deque<int>dq;

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);

    cin >> N >> d >> k >> c;

    for (int i = 0; i < N; i++) {
        int n;
        cin >> n;
        rail.push_back(n);
    }

    for (int i = 0; i < k; i++) {
        dq.push_back(rail[i]);
    }

    int left = 0;
    int right = k - 1;

    int maxx = dq.size();
    for (int i = 1; i <= N; i++) {
        dq.pop_front();

        left++;
        right++;

        if (left >= N) {
            left = 0;
        }
        if (right >= N) {
            right = 0;
        }

        dq.push_back(rail[right]);
        //최댓값 최신화

        unordered_set<int> tmp(dq.begin(), dq.end());

        bool is_coupon = false;

        if (tmp.find(c) != tmp.end()) {
            is_coupon = false;
        }
        else {
            is_coupon = true;
        }

        if (maxx <= tmp.size()) {
            maxx = tmp.size();
            if (is_coupon) {
                maxx += 1;
            }
        }
    }
    cout << maxx;
    return 0;
}

 

하지만 시간초과라는 결과를 얻게 되었다. for 루프를 돌 때마다 새로운 set을 생성하고 탐색하는 과정에서 O(Nk) 의 시간이 걸린다.

수정된 인사이트

  1. deque 을 이용한 윈도우
    -> unordered_map 을 사용
  2. unodered_set 을 사용한 중복제거
    -> unordered_map에서 key(초밥번호) 에 해당하는 value 값의 조정을 통해 중복이면 1 초과인지 확인을 해 체크

정답코드

#include <iostream>
#include <vector>
#include <deque>
#include <unordered_map>
using namespace std;

int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);

    int N, d, k, c;
    cin >> N >> d >> k >> c;

    vector<int> rail(N);
    for (int i = 0; i < N; i++) {
        cin >> rail[i];
    }

    unordered_map<int, int> sushi_count;
    int total_types = 0; // 현재 윈도우 내의 초밥 종류 수
    int max_types = 0;

    // 초기 윈도우 설정
    for (int i = 0; i < k; i++) {
        if (sushi_count[rail[i]]++ == 0) total_types++;
    }
    // 쿠폰 초밥 추가
    if (sushi_count[c]++ == 0) total_types++;

    max_types = total_types;

    // 슬라이딩 윈도우
    for (int i = 1; i < N; i++) {
        // 앞에서 초밥 제거
        if (--sushi_count[rail[i-1]] == 0) total_types--;

        // 뒤에 새로운 초밥 추가
        int new_sushi = rail[(i + k - 1) % N];
        if (sushi_count[new_sushi]++ == 0) total_types++;

        // 쿠폰 초밥 확인
        max_types = max(max_types, total_types + (sushi_count[c] == 0));
    }

    cout << max_types;

    return 0;
}

 

반응형

'BOJ' 카테고리의 다른 글

[BOJ 1011] Fly me to the Alpha Centauri  (0) 2024.08.11
[BOJ 2011] 암호코드  (0) 2024.04.21
[BOJ 2146] 다리 만들기  (0) 2024.01.26
[백준 1018번] 체스판 다시 칠하기  (0) 2021.05.03
[백준 11758번] CCW  (0) 2021.04.30
반응형

배경

피트니스 사용자가 많아지는 지금 피트니스 관련 산업이 지속적으로 발전되고 있다. 스마트폰으로 작성하는 운동일지, 운동횟수를 체크해주는 스마트워치, 운동루틴을 짜주는 AI 등 다양한 플랫폼으로 피트니스 산업은 성장 중이다. 산업이 커지는 만큼 운동 초보자들 역시 늘어난다. 하지만, 운동을 처음 배우는 초보자들에게 지속적인 운동은 매우 힘들다. 초기에 변화하는 자신의 모습에 동기부여가 되지만 어느정도 시간이 지나면 변화는 느려지고 그에 따른 동기부여가 줄어든다. 이런 사용자들을 위해 '같이 성장하는 피트니스 아바타' 를 본인이 운동하면서 키우고 다른 사람들과 공유하며 키운다면 동기부여가 상승할 것이라 생각되며 나아가 피트니스 메타버스를 형성하는데 큰 기여를 할 것이라 생각한다.

 

개발환경

 

모바일 애플리케이션 환경에서 실행될 예정이므로 앱 개발 플랫폼을 사용해야한다.
안드로이드 (java or kotlin), Swift, flutter

데이터베이스를 활용해야 하므로 firebase 를 이용한 NoSQL을 이용한다.

 

기능

 

아바타 생성

자신의 키 및 몸무게를 입력하거나 인바디 측정지를 등록한다면 사용자의 캐릭터가 사용자의 몸을 반영해 생성한다.
사용자의 고유 캐릭터를 생성하므로 모든 사용자의 캐릭터는 조금씩 차이가 있다.

 
운동일지 작성

사용자가 진행할 운동을 작성하면 운동량에 따라 피트니스 아바타가 운동을 재개한다. 아바타 성장의 오남용을 방지하기 위해 하루에 한 번 운동을 진행할 수 있으며 운동이 끝나면 아바타의 경험치가 증가한다.

 
피트니스 메타버스

토스의 내 주변 토스 사용중인 사용자를 찾는 것 처럼 해당 애플리케이션을 사용하고 있는 사용자를 찾아내어 '응원', '격려' 를 통해 경험치 공유 및 아이템 교환을 할 수 있게 한다.

 
오운완

사용자의 카메라에 접근해 오운완 촬영을 시작하며 사용자의 피트니스 아바타가 카사진에 편집되어 저장된다. 이를 통해 자신의 SNS에 아바타를 자랑할 수 있으며 사용자의 만족감을 상승시킬 수 있다.

 
미니게임

오늘의 운동을 진행해 완료했더라도 미니게임을 통해 아바타의 경험치를 올릴 수 있다. 간단한 운동게임을 진행해 아이템 및 경험치를 습득해 애플리케이션을 계속 사용할 동기부여를 제공한다.

 
아이템 상점

아바타가 착용할 아이템을 구입할 수 있다. 아이템은 기본 의류 및 피트니스 아이템을 장착시켜 꾸밀 수 있다.

반응형
반응형

자동차 회사 한국GM의 모기업 GM 의 한국 자동차 연구소인 GMTCK 이다.

 

자동차 인포테인먼트 시스템의 안드로이드 앱 개발을 위한 SW 직무에 지원했다.

 

전형절차는 다음과 같다.

  1. 이력서 작성 및 제출
  2. 폰 스크리닝 (전화)
  3. 영어 면접 (미리 정해진 질문에 대답)
  4. 최종 면접

확실히 외국계 기업답게 외국식 이력서를 제출해야하고 지원 홈페이지가 상당히 불친절하다 ㅎㅎ;

 

이번 전형은 1주일이 더 연장되어 늦게 제출한 사람은 폰 스크리닝 절차를 뛰어넘어 늦게 낸 나로써는 상당히 이득이 되었던 부분이다.

 

영어 면접은 지엠에서 자체제작한 홈페이지에서 진행하는데 챗봇과 대화하듯이 진행한다. 영상 및 목소리를 녹음하고 전송하는 형식이며 다시 녹음할 수 있는 메리트가 있다.

 

외국계 기업 특인지는 몰라도 결과가 상당히 빠르게 나왔다. 최종 면접 날짜가 바로 잡혔고 구글 미팅으로 진행했다.

자동차 제작 프로세스에 대해 아는지?

예상치 못한 질문에 당황해 대답하지 못했다.

팀원들과의 협업에서 문제가 생기면 어떻게 대답할 것인지?

협업에는 문제가 있었던 적이 없지만 중재자 역할을 주로 했다고 대답했다.

프로젝트 일정에 도저히 맞추지 못한다면 어떻게 대처할 것이지?

질문의 의도를 제대로 파악하지 못해 3번이나 다시 물어본 대목이었다.

본인이 해결했던 문제점들이 있는지?

운동에 대해 대답을 했지만 CS 적으로 듣고 싶었던 눈치였다.

영어질문

영어 질문이 하나 있었는데 기억이 나지 않는다.

입사 후 포부 (영어)

미리 준비한 대답을 말했다.

후기


면접 후기를 바로 했어야했는데 이제서야 해서 그런지 질문들이 잘 기억이 나지 않는다. ㅠㅠ

 

내 인생 첫 기업 면접이라 준비가 제대로 되지 않았다. 상당히 전형적인 면접 방식이라 어렵지는 않았는데 매우 아쉬운 면접이었다.

 

영어 면접을 할 때도 몇 번 절어서 그런지 속상했다.

 

하지만 프론트엔드 개발자를 목표로 해서그런지 붙었다고 해도 나에게 큰 메리트가 있었을지 모르겠다.

반응형

+ Recent posts