개발자 서류 / 면접 준비 #1 - 튜토리얼

tjdud0123·2020년 10월 4일
0

1) 구직을 시작하기 전에 🔎

사전점검
  • 시스템 프로그래머 vs 애플리케이션 개발자 ✔️
  • 사용자 인터페이스 코딩을 좋아하는가 ✔️
  • 디버깅에 능숙한가 ✔️
  • 테스팅을 좋아하는가 ✔️
팔릴만한 능력 계발
  • 인턴경험 / 해커랭크 등 코드 콘테스트 사이트 활용
  • *핵심은 어떤 과정에서든 지속적으로 배우는 것
  • 일을 제대로 해낼 줄 아는 것이 중요
    했던 일에서 근본적인 문제점은 무엇이었는지,
    내가 했던 프로젝트에서 그 문제를 어떻게 풀었는지 정리
  • 온라인 프로파일 정리
  • GitHub 프로파일 정리
    미완성이거나 구성이 안좋거나 후진 저장소는 지우거나 비공개로
    Read.me 파일 꾸미기
  • 개인 블로그 활용
    개발 지식 포스팅을 활용

2) 입사지원 절차 ⌛️

예비면접

이력서를 부풀려서 쓴 지원자 / 핵심적인 업무 능력이 떨어지는 지원자 거르는 용도

사내면접

간단한 프로그램이나 함수를 구현하는 문제들 풀기
컴퓨터, 언어, 프로그래밍에 대한 지식을 평가
수학이나 논리 퍼즐 문제를 풀수도 있음

3) 간단한 면접질문 몇 가지 💡

  • 보통 지식 기반 문제나 기초 코딩 및 설계에 대한 간단한 문제
  • 이력서에 있는 내용 -> 질문에 답할 때 제대로 대답하지 못하는 개념은 쓰지 않기
  • 필요한 경우 문제를 분명하게 이해하는 데 필요한 질문하기
  • 정렬대상에 따라 성능 요구조건에 따라 특이사항이 존재, 몇 가지 다른 알고리즘의 상대적 장단점에 대한 차이 설명 (추후 정리 필요)🧚

C 언어 메모리 할당
** malloc 호출

동적, 정적 할당의 장단점 (추후 정리 필요)🧚
맞춤형 메모리 관리자를 써야하는 상황 (추후 정리 필요)🧚
재귀호출 단점
반복해서 호출하여 시간과 스택공간에 오버헤드 발생
모바일 프로그래밍
특화된 운영체제 사용, 입력장치가 주로 마이크와 소프트 키보드
불편한 텍스트 입력은 최소화 하는 방향으로 인터페이스 구성
FizzBuzz
def FizzBuzz():
    for i in range(1, 101):
        isDivBy3 = i % 3 == 0
        isDivBy5 = i % 5 == 0
        if isDivBy3 and isDivBy5:
            print('FizzBuzz')
        elif isDivBy3:
            print('Fizz')
        elif isDivBy5:
            print('Buzz')
        else:
            print(i)
문자열 뒤집기
string = 'world'
# 파이썬 slice 기능 사용
reversed_string1 = string[::-1]

# for 문, += 사용
reversed_string2 = ""
for i in range(len(string)-1, -1, -1):
    reversed_string2 += string[i]

+=을 사용 하는 것은 string 객체의 immutable한 속성 때문에 객체를 계속 새로 생성한다는 문제점이 있다 (추후 정리 필요)🧚

# 배열 사용
temp = []
for i in range(len(string)-1, -1, -1):
    temp.append(string[i])
reversed_string3 = ''.join(temp)


# 내장함수 사용
reversed_string4 = ''.join(reversed(string))

print(reversed_string1)  # dlrow 0.0005810260772705078 sec
print(reversed_string2)  # dlrow 0.06191301345825195 sec
print(reversed_string3)  # dlrow 0.031083106994628906 sec
print(reversed_string4)  # dlrow 0.0041310787200927734 sec

실험 결과 :
파이썬 slice 기능 사용 >> 내장함수 사용 >>> 배열 사용 > for 문, += 사용
(추후 정리 필요 - 동작 원리)🧚

중복 삭제
# Set : 집합사용 권장
list = [1, 2, 4, 4, 5, 6, 6, 7, 1]
new_set = set(list) # {1, 2, 4, 5, 6, 7}
return list(new_set)

# 구현
def distinct(array):  # set화
    temp = []
    for num in array:
        if num not in temp:
            temp.append(num)
    return temp


def sum_arr(base, other):  # 합집합
    temp = base.copy()  # 값복사로 해야함
    for num in other:
        if num not in temp:
            temp.append(num)
    return temp


def complement(base, other):  # 차집합
    temp = base.copy()  # 값복사로 해야함
    for num in other:
        if num in temp:
            idx = temp.index(num)
            temp.pop(idx)
    return temp


def intersect(base, other):  # 합집합
    temp = []
    for num in base:
        if num in other:
            temp.append(num)
    return temp
중첩 괄호
# 스택 사용
def checkNestingWithStack(brackets):
    stack = []
    for b in brackets:
        if b == '(':
            stack.append(b)
        elif not stack:
            return False
        else:
            stack.pop()
    return not stack
    
# 숫자로 count
def checkNestingWithCount(brackets):
    cnt = 0
    for b in brackets:
        if b == '(':
            cnt += 1
        else:
            cnt -= 1
        if cnt < 0:
            return False

참고 깃헙 : https://github.com/tjdud0123/daily_algorithm/tree/master/%EB%A9%B4%EC%A0%91%EB%8C%80%EB%B9%84

4) 기술과 무관한 질문 🗣

기술과 무관한 질문이 필요한 이유
  • 다른 직원들과 어울릴 수 있는 경험과 능력을 갖추고 있는지 알아보기 위해
  • 개발 경험이 없는데 써본적 있냐고 물어봤을 때
    -> 비슷하게라도 경험이 있다면 경험 강조,
    -> 없다면 자신의 강점 호소 ex) 빠른 습득력 등
  • 팀워크 강조 할 수 있는 내용, 훌륭한 팀의 일부가 될 수 있다는 내용 어필
무엇을 하고 싶은지
  • 어떤 일을 하는지 정해진 경우
    -> 그 일에 관심이 있다는 것을 합당한 이유로 설명
  • 어떤 일을 하는지 정해지지 않은 경우
    -> 이상적인 회사라는 식으로 설명 ex) 많이 성장할 수 있는 환경, 훌륭한 팀의 멤버가 되는 것을 중요시 한다 등
  • 회사에서 시키는 일이면 뭐든 할 수 있다는 식의 대답은 좋지 않음
선호하는 프로그래밍 언어

다양한 언어에 익숙하고 가장 적합한 연장을 골라쓰는 것이 중요

경력/프로젝트에 관해
  • 자신이 이룬 주요 업적을 분명하게 대답하고 열의를 보여야 함
  • 어떤 것을 배웠는지
  • 긍정적인 면과 부정적인 면 모두 설명
  • 미리 꼭 연습할 필요가 있음
왜 하필 그 회사인지
  • 지원할 회사에대한 충분한 조사, 준비
  • 운의 폭을 좁힐만한 너무 구체적인 이유는 제시하지 않기
반대로 질문을 하라고 할 때
  • 무슨 일을 하게 될지 물어보기
  • 면접 중 면접관이 한 흥미로운 이야기에 관해
  • ~~자신의 면접 중 무엇이 부족했는지 물어 보는 것이 좋다는 이야기도 있고 독이 된다는 이야기도 있다.~~

5) 이력서 📃

  • 자신을 팔 수 있는 이력서를 작성
    짧은 시간안에 자신이 충분히 선발할 가치를 지닌 지원자라는 확신을 심어줄 수 있는 내용
  • 최대한 짧게 작성
    너무 다양한 주제와 관련된 단어를 집어 넣기보다는 제대로 할줄 아는 것을 간결히
  • 자신이 기여한 바를 분명하게 드러내야 함
  • 하고 싶은 일을 간단 명료하게 필요한 정보만 수록
  • 여러 번 반복히여 교정

참고 : 프로그래밍 면접 이렇게 준비한다 - 한빛 미디어
profile
Junior Web FE Developer

0개의 댓글