본문 바로가기

TIL

개발자 면접 질문 리스트 정리 (백엔드 중심) 면접에서는 밝고 웃는 모습, 그리고 자신감을 보여주면 된다고 생각을 했었다. 개발자의 경우, 코딩테스트와 포트폴리오로 그 사람을 정량것 평가가 가능하니, 면접에서는 태도와 자신감이 중심일 거라고 더더욱 생각을 했었다. 하지만, 이는 나의 착각. 1차 면접, 그리고 2차 면접에서도 여전히 그 사람의 역량을 꾸준히 평가한다.기술면접 질문을 답변을 하더라도, 그 사람의 역량이 어느정도 되냐에 따라 답변의 깊이가 다르다. 또한, 꼬리질문을 몇 단계로 나아가기 때문에, 겉으로만 외워서 말하는 건지 평가도 가능하다.그래서인지.. 서류 합격, 코딩테스트 합격을 해서 면접 기회를 얻었다고 해서 안심하지 못하는 습관을 가지게 되었다. 그래서 면접을 준비할 때마다, 단순히 답변을 외우기보다는 어떤 질문이 반복적으로 등장.. 더보기
Java의 메모리 구조: 힙(heap)과 스택(stack)을 중심으로 알아보자 프로그래밍을 잘 하려면 코드를 잘 짜면 된다라고만 생각하기 쉽다. 그런데, 코드를 잘 짜야 된다는 것은 정확히 무엇을 의미할까? 알고리즘 문제를 풀다보면, 기깔나게 압축해서 코드를 작성한 답안들을 보면 감탄이 저절로 나온다. 이것이 과연 코드를 잘 짜는 것일까..?저는 이를 운전에 비유하고 싶다. 운전을 잘한다고 하면, 영화 속 레이싱 장면처럼, 주변 장애물과 차를 요리조리 비켜서 과속하는 것을 생각할 수도 있다. 하지만, 주변에서 운전을 잘한다는 평판을 얻는 사람들을 보면, 주변 도로의 움직임을 전반적으로 파악한다는 것이 특징이다. 여기서 어떤 차량에 우선권이 있고, 본인은 언제 교차로에 진입할지 파악을 한다. 그리고 서로 조율과 배려를 통해, 부드러운 교통흐름이 완성된다.이제 이를 개발자로 비유를 하.. 더보기
동시성 문제: 여러 개의 스레드를 돌리면 반드시 발생하는 일 동시성(Concurrency)는 백엔드를 조금 더 깊게 구현하기 시작하면 직면하게 되는 문제이다. 이전 글에서 스레드에 대한 개념을 설명을 한 적이 있었다. 스레드는.. 일을 하는 일종의 단위이다. 이렇게 말하면 너무 추상적인데, 만약 부엌에서 음식을 만든다고 할 때, 스레드는 요리사로 생각하면 이해가 쉽겠다. 기초적인 백엔드 서버 구현할 때에는 보통 스레드 하나(요리사 한 명)을 배치하여 작업을 하는 것이 일반적이다. 여러분도 입문하여 처음 프로젝트를 할 때, 대부분 스레드 1개짜리용 서버를 구현을 하였을 것이다.하지만, 오늘날 서버는 동시에 막대한 양의 요청을 처리해야 한다. 특히 대규모 서비스의 경우 더더욱 그러하다. 요리사 한 명이 아무리 빠르게 음식을 만든다고 해도, 작업에는 한계가 있을 터.... 더보기
OAuth란? 그리고 적용시 고려해야 하는 점 백엔드 프로젝트를 진행하다보면, 다들 기능을 하나하나 추가하고 싶어하는 마음이 생기게 된다. 아마 프로젝트를 진행할 때, 기본적으로 로그인 환경을 구현할 것이다. MySQL과 같은 RDBMS를 사용하여, 테이블에 ID와 password가, 클라이언트가 보낸 데이터와 일치하는지 확인한 다음, 성공시 해당 유저를 특정할 수 있는 토큰/세션을 발급해 주는 방식이 가장 흔할 것이다. (여기서 좀 더 업그레이드를 한다면, 비밀번호를 암호하 하여 저장)사실, 여기까지는 강의를 통해서든, 부트캠프를 통해서든 과정이 마련되어 있어 구현을 대부분 할 수 있을 것이다. 그러나, 요즘 서비스에서 번거롭게 직접 아이디와 비밀번호를 생성하는 과정보단, 이미 가입한 소셜 계정(카카오/구글/네이버 등)을 통해 회원가입과 로그인을 .. 더보기
왜 백엔드에서는 Spring을 사용하는가? 오랜만에 TIL을 작성해본다!사실 우리나라는 자바 공화국이라고 부를 정도로, Java를 많이 사용한다. 정확히는 Java라는 언어만 사용하기 보다는 Java와 함께 Spring 프래임워크를 함께 서버 구축하는데 사용을 한다. 서버 구축을 위한 프래임워크는 생각보다 다양하다. Javascript의 Node.js, Python의 Django, C#의 .Net 등등.. 그런데 우리나라 만큼은 아니더라도.. 해외에서도 Spring은 서버에서 주로 사용하는 프래임워크다.왜 Spring을 선호하는 걸까? Spring 만의 장점이 있는 걸까? 지금 이번 글에서 다뤄보고자 한다. 보편적으로 사용하는 백엔드 프래임워크 비교해보자언어JavaJavascriptPythonPHPC#프래임워크Spring Node.jsDjango.. 더보기
백엔드 개발자라면 당신이 알아야 할 것! OSI 7 계층 정보처리기사 필기 실험을 보았다.아마 개발자를 준비, 특히 백엔드 직군을 대비하고 있다면,정보처리기사(정처기)나, SQLD 등의 자격증을 준비하고 있는 분들이 계실 것이다. 그 뿐만 아니라, 부트캠프나 혹은 면접을 볼 때,osi 7계층, 혹은 TCP/IP 계층에 대해 꼭 질물을 물어보았다는 경험이 있을 것이다.나 또한 질문을 받아보았고, 정처기 문제에서도 빈도 높게 나온 만큼, 이번에 한번 다뤄보고자 한다.  OSI(Open System Interconnection Reference Model) 7계층이란?먼저 osi 7계층에 대해 설명하기에 앞서 이것이 왜 필요한지, 무엇을 정의하는 지 알 필요가 있다.컴퓨터는 0과 1이라는 무수한 전기적 신호를 주고 받으면서 통신을 한다.위의 그림처럼 아주 간단하게... 더보기
기술면접 대비: 백엔드 신입에게 자주 물어보는 질문들 면접 일정이 잡혔다.많은 개발자, 백엔드 신입 개발자라면 다른 취준생과 다르게 겪는 관문이 있다.하나는 기술면접, 다른 하나는 코딩테스트이다.마음 같아서는 면접 한 번만에 휘~익 합불 여부가 결정되었으면 좋겠으나,어디까지나 취준하는 사람의 입장일 뿐.. 아무튼, 이번 면접은 기술면접이며, 백엔드를 목표로 하는 많은 신입 개발자들에게 물어보는,보편적인 기술적(?) 질문들을 훑어보고자 한다. 객체지향 언어(OOP)와 절차지향 언어(POP)의 차이점이 뭐에요?정보처리기술사를 준비하는 사람이라면 꼭 듣는 내용 중 하나이다.절차지향(Procedural Oriented Programing)과 객체지향 (Object Oriented Programing) 과의 차이는 무엇일까?사실 단어에서도 이미 답이 적혀있듯, 절차.. 더보기
Base 64 인코딩(encoding)이란 무엇인가? - 사용하는 이유 지난 글에서 Base 64 인코딩에 대해서 알아보았다.어떤 정보를 Base 64 라는 차트에 맞게, 6bit 단위로 인코딩을 하는 것이라는 것! Base 64로 인코딩을 하여 전송하는 이유는 무엇일까?바로 안전하고 호환성 있게 전송되기 때문이다. 그렇다면, 왜 Base 64 인코딩 방식이 안전한 것이고,다른 방식의 인코딩은 안전하지 못한 것일까?지금부터 하나하나 파헤쳐보자.  먼저 컴퓨터는 기본적으로 이진법, 즉 binary(바이너리)인 데이터로 통신한다.0과 1이라는 무수한 조합을 만들어서 이를 주고 받는데,이렇게 받아온 0과1 짜리 데이터를 컴퓨터는 프로그램을 통해 읽어, 글자/이미지/음성/영상 등다양한 방식으로 해석하여 사용자에게 보여준다. 문제는..서로 다른 환경의 컴퓨터가 소통을 하게 된다면? .. 더보기