본문 바로가기
728x90
반응형

전체 글416

[21년 상반기] 네이버 공채 코딩 테스트 후기 안녕하세요. J4J입니다. 이번에 이직을 시도해보고자 네이버 신입 공채에 지원하게 되었습니다. 서류 제출 기한은 21.04.02(금) ~ 21.04.12(월)이었습니다. 자기소개서도 간단하게 언급을 해보자면 작성해야 될 문항은 총 3개였지만 그다지 까다로운 문항들을 아니었다고 생각합니다. 예전에도 네이버 공채를 지원해본 적이 있는데 그때보다는 훨씬 편안한 문항이라고 느꼈습니다. 서류를 제출하고 코딩 테스트 대상자가 되었다는 연락은 21.04.19(월)에 왔습니다. 처음 연락은 문자로 채용 홈페이지를 확인해 보라고 왔었고 그 뒤로 21.04.21(수)에 메일로 상세 일정이 나왔습니다. 시험 일정은 21.04.24(토) 14:00 ~ 16:00이었고 비대면으로 집에서 진행되는 시험이었기 때문에 시험 보는 P.. 2021. 7. 8.
[JavaScript] 비동기 처리와 Callback, Promise, Async/Await 안녕하세요. J4J입니다. 이번 포스팅은 비동기와 callback, promise, async/await에 대해 적어보는 시간을 가져보려고 합니다. 비동기란? 비동기라고 하는 것은 간단하게 말씀드리면 특정 기능이 수행될 때 해당 기능이 모두 완료될 때까지 기다리지 않고 다른 기능들을 수행하는 것을 의미합니다. 대표적으로 사용되는 곳이 서버쪽과 데이터를 주고받을 때 사용되는데 클라이언트에서 서버 쪽에 비동기 요청을 해놓고 클라이언트에서는 다른 작업을 수행하고 있다가 서버 쪽에서 모든 작업이 완료되어 response를 해주면 그 순간 전달받은 데이터를 클라이언트에서 사용하는 방식입니다. 장/단점 비동기처리를 사용했을 때의 장점은 작업 처리 속도가 빨라진다는 것입니다. 서버에 작업 처리를 요청해두고 클라이언트.. 2021. 6. 29.
[JavaScript] 클로저 (Closure) 안녕하세요. J4J입니다. 이번 포스팅은 클로저에 대해 적어보는 시간을 가져보려고 합니다. 클로저란? 클로저는 내부 함수가 외부 함수의 환경을 기억하는 것을 의미합니다. 예를 들어 다음과 같은 코드가 있다고 가정해보겠습니다. 코드를 해석해보면 myLog라는 변수에는 getLog함수가 저장되어 있는 상황입니다. 그리고 myLog에 파라미터를 집어넣어 getLog함수를 실행시켜 봤더니 'message comment: hi!'라는 값이 출력이 되었습니다. 일반적으로 getLog함수만을 위와 같이 정의하여 사용하게 된다면 message라는 변수값을 찾지 못해 에러가 발생되는 것이 정상적입니다. 하지만 이런 생각과 달리 위의 코드는 정상적으로 실행되었고 심지어 Log함수에서 저장한 message변수값이 그대로 담.. 2021. 6. 22.
[JavaScript] This와 Call, Apply, Bind 안녕하세요. J4J입니다. 이번 포스팅은 this와 call, apply, bind에 대해 적어보는 시간을 가져보려고 합니다. This란? this라고 하는 것은 코드를 실행한 object를 의미합니다. 그리고 다음 코드와 같이 일반적으로 어느 상황에서든 this값을 출력해보면 항상 Window가 출력이 됩니다. 하지만 이런 this값이 바꿔지는 경우도 당연히 존재하고 다음과 같은 방법들이 있습니다. 객체 내부에 함수 선언 new키워드 사용 call, apply, bind 메서드 사용 객체 내부에 함수 선언 객체 내부에 함수를 선언하는 예제 코드는 다음과 같은 코드가 있습니다. obj라는 이름의 객체 내부에 log라는 함수를 선언하여 this를 출력해봤습니다. 그 결과 {a: 3, log: f}라는 결과.. 2021. 6. 21.
[JavaScript] Lexical Scope 안녕하세요. J4J입니다. 이번 포스팅은 Lexical Scope에 대해 적어보는 시간을 가져보려고 합니다. Lexical Scope란? lexical scope는 자바스크립트에서 변수를 찾아 사용할 수 있는 범위를 의미합니다. 예를 들어 다음과 같은 코드가 있다고 가정해보겠습니다. getName이라는 함수 내부에서 name이라는 변수를 출력해보면 함수 내부에서 name이라는 변수를 선언한 적이 없지만 'name'이라는 값이 출력이 됩니다. 왜냐하면 getName이라는 함수에서는 자기 자신에게 name이라는 변수가 없다면 상위 실행 문맥에 존재하는 name변수를 탐색하여 찾은 변수값을 출력해주기 때문입니다. 그리고 이처럼 사용할 수 있는 변수값들의 범위를 lexical scope라고 합니다. Lexica.. 2021. 6. 20.
[JavaScript] 실행 문맥 (Execution Context) 안녕하세요. J4J입니다. 이번 포스팅은 실행 문맥에 대해 적어보는 시간을 가져보려고 합니다. 실행 문맥이란? 실행 문맥은 말 그대로 자바스크립트에서 코드가 실행되는 문맥을 의미하는 추상적인 용어입니다. 문맥마다 소유하고 있는 변수, 상위 문맥들의 변수를 찾는 스코프 등에 대한 정보들을 가지고 있습니다. 실행 문맥은 3가지로 나눌 수 있습니다. 전역 실행 문맥 함수 실행 문맥 Eval 실행 문맥 전역 실행 문맥은 자바스크립트가 실행되는 순간 만들어지는 실행 문맥을 의미합니다. 함수 실행 문맥은 함수가 실행되는 순간 만들어지는 실행 문맥을 의미합니다. Eval 실행 문맥은 Eval 함수가 실행되는 순간 만들어지는 실행 문맥을 의미합니다. 실행 문맥 속성 실행 문맥의 속성 값들도 3가지가 존재합니다. arg.. 2021. 6. 20.
[JavaScript] == vs === 안녕하세요. J4J입니다. 이번 포스팅은 ==과 ===를 비교해보는 시간을 가져보려고 합니다. == 자바스크립트에서 사용되는 == (equal)은 다음과 같은 특징을 가지고 있습니다. 값을 비교할 때 사용됨 강제 형 변환을 먼저 수행한 뒤 값이 같은지를 비교 좀 눈에띄는 특징은 강제 형 변환을 먼저 수행한다는 것입니다. 강제 형변환을 하기 때문에 타입이 서로 다르지만 값이 같을 경우에는 true를 반환하게 되어 실수 값과 문자열을 비교하더라도 true가 나올 수 있는 상황이 발생됩니다. 간단한 예시를 들면 다음과 같은 결과들이 나올 수 있습니다. === 자바스크립트에서 사용되는 === (strict equal)은 다음과 같은 특징을 가지고 있습니다. 값을 비교할 때 사용됨 타입과 값을 모두 같은지를 비교.. 2021. 6. 16.
[JavaScript] 함수 표현식 / 함수 선언식 안녕하세요. J4J입니다. 이번 포스팅은 함수 표현식과 함수 선언식에 대해 적어보는 시간을 가져보려고 합니다. 함수 표현식 함수 표현식이란 함수를 정의할 때 자바스크립트 변수에 정의된 함수들을 저장하는 것을 의미합니다. 예를 들어 다음 코드들처럼 let, const, var와 같은 자바스크립트 변수에 함수를 생성하여 저장하는 방식이 함수 표현식입니다. 함수 선언식 함수 선언식은 function 키워드 옆에 함수 명을 지정하여 함수를 정의하는 방식입니다. 예를 들어 다음 코드들처럼 함수를 생성하는 것들이 함수 선언식을 이용한 방식입니다. 차이점 우선 함수 표현식과 함수 선언식은 모두 함수를 정의할 때 사용한다는 공통점을 가지고 있습니다. 하지만 그와 달리 차이점들도 존재합니다. 제가 알고 있는 차이점은 다.. 2021. 6. 15.
[JavaScript] 호이스팅 (Hoisting) 안녕하세요. J4J입니다. 이번 포스팅은 호이스팅에 대해 적어보는 시간을 가져보려고 합니다. 호이스팅이란? 호이스팅이라고 하는 것은 선언된 변수들을 최상단으로 끌어올려주는 것을 의미합니다. 예를 들어 다음과 같은 코드가 있다고 가정하겠습니다. 일반적인 상황에서 해당 코드를 해석해보면 a라는 변수가 선언된 위치에 도달하기 전에 a변수를 사용했기 때문에 에러가 발생될 것이라고 생각을 할 수 있습니다. 하지만 해당 코드는 호이스팅에 의해 에러가 나지 않습니다. 왜냐하면 호이스팅이 되어 자바스크립트가 인식하는 실제 코드는 다음과 같기 때문입니다. 참고적으로 위의 코드는 a변수를 출력했을 때 3이라는 값이 나오지 않고 undefined라는 값이 나오게 됩니다. 그리고 이렇게 변수 선언 위치를 최상단으로 끌어올려주.. 2021. 6. 14.
[SpringBoot] 파일 다운로드 안녕하세요. J4J입니다. 이번 포스팅은 부트에서 파일 다운로드하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 다운로드될 파일 테스트용으로 다운로드해 볼 파일을 다음과 같은 위치에 두겠습니다. 해당 파일을 부트에서 작성된 코드를 활용하여 웹페이지에서 다운로드해보도록 하겠습니다. 부트 코드 package com.spring.fileDown.controller; import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import org.springframework.core.io.InputStreamResource; import org.springframework.core.i.. 2021. 6. 7.
[Spring] 파일 다운로드 안녕하세요. J4J입니다. 이번 포스팅은 스프링에서 파일 다운로드하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 다운로드될 파일 테스트용으로 다운로드해 볼 파일은 다음과 같은 위치에 저장되어 있습니다. 그리고 이 파일을 스프링을 이용하여 접근할 수 있도록 하고 웹페이지에서 특정 URL에 접근을 하게 되면 해당 파일이 다운로드되는 코드를 구현해보겠습니다. 스프링 코드 package com.spring.fileDown.controller; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; import org.springfra.. 2021. 6. 7.
[Git] revert / reset 비교 안녕하세요. J4J입니다. 이번 포스팅은 revert와 reset을 비교해보는 시간을 가져보려고 합니다. revert [ 기본 사용 방법 ] revert의 특징은 다음과 같습니다. 특정 commit에 의해 반영된 변경사항을 되돌린다. revert를 수행한 것도 결국 commit 되기 때문에 로그에서 확인이 가능하다. 예를 들어 다음과 같은 commit된 로그들이 있습니다. 그리고 각각의 commit들마다 파일을 한 개씩 생성하여 다음과 같이 파일 구성이 되어있습니다. 여기서 만약 "두 번째 파일"이라는 이름의 commit내용이 잘못되었다고 했을 때 revert를 이용하여 해당 commit만 되돌릴 수 있습니다. 사용하는 명령어는 다음과 같습니다. git revert {commit 명} or git rev.. 2021. 5. 30.
[SpringBoot] 파일 업로드 - MultipartFile(With. React) 안녕하세요. J4J입니다. 이번 포스팅은 부트에서 multipartFile을 이용한 파일 업로드 방법에 대해 적어보는 시간을 가져보려고 합니다. ※ legacy에서 multipartFile을 이용한 파일 업로드하는 방법이 궁금하신 분은 여기를 참고해주세요. 부트 설정 및 코드 [ 1. application.yml에 multipart 설정해주기 ] spring: servlet: multipart: max-file-size: 20MB #최대 파일 사이즈를 20MB로 지정 참고적으로 max-file-size 말고도 더 다양한 설정값들이 있으니 한 번 확인해보시는 것도 좋을 것 같습니다. [ 2. controller단 ] package com.spring.multipart.controller; import ja.. 2021. 5. 27.
[SpringBoot] 다중 DB 및 다중 개발환경에서 JNDI 설정 안녕하세요. J4J입니다. 이번 포스팅은 다중 DB 및 다중 개발환경에서 JNDI 설정하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 이전 포스팅에서는 jndi를 이용한 가장 기본적인 환경 구성에 대해 다뤘었습니다. 이번에는 한 번에 여러 개의 데이터베이스에도 연결되고 또한 동일한 코드로 개발/운영 환경에 맞는 데이터베이스 접속될 수 있도록 설정을 해보겠습니다. 다중 DB 같은 경우는 jndi 설정을 위한 resource를 여러 개를 등록한 뒤 각각의 resource와 매핑되는 rootContext 설정을 해 볼 예정입니다. 개발/운영 환경을 구분하는 것은 profile을 이용하여 설정해 볼 예정입니다. 참고적으로 설정 부분만 끄집어내기에는 애매하다고 생각되어서 MyBatis를 이용하여 설정하는 방.. 2021. 5. 25.
[21년 상반기] 라인 플러스 공채 2차 면접 후기 안녕하세요. J4J입니다. 라인 플러스 공채 1차 면접에 합격되어 2차 면접을 보게 되었습니다. 1차 면접의 결과는 04.27(화)에 메일로 전달받았고 같은 메일로 면접 일정에 대해서도 확인할 수 있었습니다. 면접은 05.06(목) ~ 05.14(금)까지 진행되었고 언제 면접을 보는지에 대한 상세 일정은 04.29(목)에 동일하게 메일로 전달받았습니다. 2차 면접은 인성만 보는 면접이 아닌 기술/인성 면접이었습니다. 2차 면접을 준비하기 위해 1차 면접 때 준비했던 답변들을 좀 더 보완하는 시간을 가졌고 또한 1차 면접에서 데인 게 있어서 제가 뱉을 개념 및 기술적인 요소들에 대해 더 깊게 공부하려고 했습니다. 면접 진행방식은 1차 면접과 동일하게 Zoom을 이용한 화상면접이었습니다. 면접장에 들어갔을 .. 2021. 5. 19.
[21년 상반기] 라인 플러스 공채 1차 면접 후기 안녕하세요. J4J입니다. 라인 플러스 공채 필기 테스트에 합격하게 되어 1차 면접을 보게 되었습니다. 필기 테스트의 결과는 04.07(수)에 메일로 전달받았고 같은 메일로 면접 일정에 대해서도 확인할 수 있었습니다. 면접은 04.12(월) ~ 04.23(금)까지 진행되었고 언제 면접을 보는지에 대한 상세 일정은 04.08(목)에 동일하게 메일로 전달받았습니다. IT회사의 면접은 처음이어서 걱정 반 설렘 반으로 면접 준비를 했습니다. 기술면접이라고는 하지만 혹시 몰라 간단한 인성에 대해서도 준비를 했고 프로젝트 및 공부했던 개념들에 집중하며 공부했었습니다. (결국 인성은 하나도 안 나왔지만 ㅠㅠ) 면접 진행방식은 Zoom을 통한 화상면접 방식이어서 환경설정을 마친 뒤 면접 당일날 시간에 맞춰서 대기하고 .. 2021. 5. 19.
[SpringBoot] Boot환경에서 JNDI사용하기 안녕하세요. J4J입니다. 이번 포스팅은 스프링 부트에서 JNDI 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다. 기존 환경 [ 1. application.yml ] spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/jndi?serverTimezone=UTC username: root password: root ... 기존에는 위와 같이 application.yml에 datasource가 등록되어 있습니다. 그리고 비즈니스 로직 구간도 구성이 되어 있어서 포스트맨에서 API를 호출할 경우 다음과 같이 조회가 되고 있습니다. 이와 동일한 결과가 나오도록 JNDI로 변경해보도록.. 2021. 5. 17.
[21년 상반기] 라인 플러스 공채 필기 테스트 후기 안녕하세요. J4J입니다. 라인 플러스 공채 코딩 테스트에 합격하게 되어서 필기 테스트를 보게 되었습니다. 코딩 테스트의 결과는 03.25(목)에 메일로 전달받았고 필기 테스트는 이틀 뒤인 03.27(토)에 예정되어 있었습니다. 필기 테스트의 시험 시간은 총 1시간(10:00 ~ 11:00)이었습니다. 필기 테스트가 코딩 테스트와 좀 달랐던 환경은 캠을 설치하여 본인이 시험 보고 있는 모습을 시험 시간 동안 전송해줬어야 했습니다. 안내 메일이 오면서 캠 설치에 관련되어서도 같이 가이드가 왔기 때문에 가이드에 온대로 따라하기만 하면 문제없이 환경설정을 마칠 수 있었습니다. 참고적으로 저는 따로 캠이 없었기 때문에 핸드폰으로 연결했고 공유되어야 되는 화면은 총 2개로 핸드폰을 통해 제가 시험 보고 있는 모습.. 2021. 5. 14.
728x90
반응형