지난 달에 이미 역검을 한차례 보았는데 AI 면접에서 두려워 중단했다가
오늘이 역검 마감일이라 부리나케 유튜브로 알아보고 역검을 다시 보았다.
지원한 회사는 마이다스인,
클라우드 환경 웹서비스 프런트엔드 개발 직군이었다.
마이다스인, 마이다스아이티라는 회사는 이번에 처음 알게 되었는데
선배의 추천으로 지원하게 되었다.
마이다스아이티라는 회사가 바로 이 역검을 만들어낸 장본인이었다.
어쩐지 다른 회사들에서는 볼 수 없었던 방식의 채용이라 신기했다.
어차피 시간 내에 내가 할 수 있는 만큼 정직하게 해내면 된다고 생각했기에
게임은 그냥저냥 풀었고
면접은 경험이 전무해서 연습을 몇 번 해보았다.
일단 질문이 뜨면 30초의 준비시간 동안 답변 관련해서 키워드를 종이에 몇개 적었고
머리를 재빨리 굴렸다.
대개 질문은 자소서 항목에 있을 법한
'다른 사람과 일 할 때 힘든 경험',
'회사에서 가장 중요하게 생각하는 가치',
'일을 할 때 나의 강점', 등등
그다지 어려운 질문들은 아니었다.
답은 ㅋㅋ.. 그래.. 실제 면접관 아니고 일단은 AI니까 조금 더듬어도 상관없다고 마인드 컨트롤하며
최대한 태연하게 답변하려고 노력했다.
평소 손짓이나 제스쳐를 잘 사용하지 않음에도 불구하고 당황하니까 부연설명을 잘 하고자 하는 본능 때문이었는지 나도 모르게 손을 막 저으며 설명하고 있었다.
내가 굉장히 쿨한 척, 침착한 척 한 걸 AI도 눈치 챘을 듯 하다.
아무튼 한 시간 그렇게 면접을 보고 바로 결과가 나오는 것은 아니었다.
저녁 먹고 돌아오니 완성이 되어있었다.
그냥 응시 결과표일 뿐인데도 "VERY GOOD"라고 해주니 기분이 좋았다.
암튼 지원 ㄱㄱ..
결과는 언제 나오는지 모르겠지만 또 하염없이 기다려본다. 제발 돼라ㅜㅜ
그리고 3/10에 치르게 될 프로그래머스 프론트엔드 코딩테스트를 준비하기 위해
옛날옛적에 사두고 한 번도 펼쳐보지 않은 '모던 자바스크립트 Deep Dive' 책을 꺼냈다.
이 책도 학교 선배가 '자스의 바이블'이라며 추천해 준 책인데 작년 말에 샀다가 이제야 꺼내들어본다.. (나는 학교 선배들 없이 못사라~~~)
사실.. 리액트로 개발을 몇번 해봐서 준비할 생각조차 못했는데 어제 프로그래머스 연습 과제관 들어가서 풀어보려다가 손도 못대고 나와서 당황탐... 아무래도 자스 기초는 많이 부족한 듯하다..
빨리 이 책을 사흘 내로 훑고 연습과제를 풀어봐야할텐데 걱정이다.
초반은 거의 개념 설명이라 학교 프로그래밍언어의개념 수업에서 배운 내용이 들어있고 거의 다 아는 내용이라 술술 읽히는 중..
그래도 오늘 새로 깨달은 게 있더라.. 나란 자식.. 모자란 놈!
// 변수 호이스팅 --> JS는 인터프리터 언어로 한줄씩 실행되나
// 변수, 클래스, 함수 등 선언은 미리 모아 읽어 실행 후 나머지 코드 실행
// 따라서 error 발생 x -> undefined 출력
console.log(result);
// 선언 시 undefined로 자동 초기화 -> 쓰레기값 방지 장점
var result;
result = 80;
// 변수에 값 할당 후 출력되므로 80 출력 --> 주의할 점 (undefined였던 변수와 80 이라는 값은 서로 다른 메모리에 저장됨)
console.log(result);
// 값 재할당-->var로 선언된 변수는 값 재할당 가능, 값 재할당이 불가능한 건 상수(constant)
// ES6 기준으로 사용하는 const 는 상수 (재할당이 금지됨)
// 재할당 시 이전과 같이 undefined, 80, 90 서로 다른 메모리에 저장됨 --> undefined와 80과 같은 불필요한 값은 나중에 가비지 콜렉터에 의해 자동 메모리 해제됨.
result = 90;
// 재할당 된 값 90 출력
console.log(result);
// js의 단축평가
// || 연산 전에 cat --> true이므로 cat 만 보고 바로 출력
console.log('cat' || 'dog');
// cat true, and dog true --> dog 출력
console.log('cat' && 'dog');
// || 연산 전에 false -> dog로 넘어감, dog true이므로 dog 출력
console.log(false || 'dog');
// 'cat' true , false false -> false 출력
console.log('cat' && false);
요
// null 병합 연산자 ??
// 좌항의 피연산자가 Falsy값인 null 또는 undefined인 경우 우항 반환, 아니면 좌항 반환
var foo1 = null ?? 'default string';
console.log(foo1); // 'default string' 반환
// false, undefined, null 0, -0, NaN, '' 등 모두 포함
var foo2 = '' ?? 'default string';
console.log(foo2); // '' 반환
// || 연산자의 경우 -> falsy값인 0 이나 '' 도 기본값으로 유효함
var foo3 = '' || 'default string';
console.log(foo3); // 'default string' 반환
이 부분은 알고 있지만 한 번 더 정리해본다.
최근 arrow function 말고는 거의 사용해 보질 않아서 알아두기 위함..
// 1. 함수 선언문
function add(x, y) {
return x + y;
}
// 2. 함수 표현식
var add = function (x, y) {
return x + y;
};
// 3. Function 생성자 함수
var add = new Function('x', 'y', 'return x+y');
// 4. 화살표 함수 (ES6)
var add = (x, y) => x + y;
함수 선언문으로 정의한 함수는 런타임 이전에 실행이 먼저 되는데, 함수 표현식으로 작성한 함수는 변수 호이스팅이 발생하므로 선언 이전 참조 시 undefined 값을 갖는다.
// 함수 참조
console.dir(add); // [Function: add]
console.dir(sub); // undefined --> 변수 호이스팅이기 때문
// 함수 호출
console.log(add(2, 5)); // 7
console.log(sub(2, 5)); // error
// 함수 선언문
function add(x, y) {
return x + y;
}
// 함수 표현식
var sub = function (x, y) {
return x - y;
};
함수 호이스팅은 함수 호출 전 반드시 함수를 선언해야 하는 당연한 규칙을 무시하므로
함수 선언문 대신 함수 표현식 사용을 권장.
함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백함수라고 함.
매개변수를 통해 함수의 외부에서 콜백함수를 전달받은 함수는 고차함수라고 함.
function repeat(n) {
for (var i = 0; i < n; i++) console.log(i);
}
function repeat1(n) {
for (var i = 0; i < n; i++) {
if (i % 2) console.log(i);
}
}
repeat(5);
repeat1(5);
// --> 두 함수 모두 출력하고자 하나 전체 출력 or 홀수만 출력이냐에 따라 두번 정의해야함 (비효율적)
// 해결책 -> 콜백함수
// 전달받은 함수 f를 n만큼 반복 호출하는 함수 (고차함수)
function repeat(n, f) {
for (var i = 0; i < n; i++) {
f(i);
}
}
// 전체 로그 찍는 함수 (콜백함수)
var logAll = function (i) {
console.log(i);
};
// 홀수만 로그 찍는 함수 (콜백함수)
var logOdds = function (i) {
if (i % 2) console.log(i);
};
// 함수 호출
repeat(5, logAll);
repeat(5, logOdds);
오늘은 자스바이블 188쪽(12장 함수)까지 공부해보았다.
목표는 16장까지 다 보고 자는 건데..
일단 시간이 많이 늦었으니 이정도로 보도록해야지.
그나저나 이 책을 통해 공부를 한다고 해도 빠르게 실전에 적용해서 프로그래머스 챌린지를 풀어낼 수 있을까 걱정이 된다.
내일은 예전에 들었던 자스 강의를 다시 들어보고 책 진도도 더 나가보는 걸로 해야겠다.