본문 바로가기

분류 전체보기

(17)
2021 상반기 삼성전자 인턴 코딩테스트 후기 어제 삼성전자 인턴 코딩테스트를 보러 용인 삼성인재개발원에 다녀왔다. 처음 보는 코딩테스트인 만큼, 후기를 남겨보려고 한다. 지원하게 된 계기 한 학기 휴학을 하고, 창업 프로젝트에 참여하면서 알고리즘 공부를 꽤 오랫동안 쉬었다. 막학기에 복학하면서 YAPP 이라는 IT 동아리에서 활동하며 알고리즘 스터디에 참여했다. 오랜만에 다시 보니, 드문드문 이론은 기억나지만 코드 자체가 손에 익지 않아서 다시 익숙해지는데 시간이 꽤나 많이 걸렸다. 스터디를 하면서 느낀 점은, 공부의 목적성이 명확하지 못하다는 것이었다. 문제를 정해 각자 풀어온 후 팀원끼리 코드를 공유하며 리뷰하는방식으로 스터디가 진행되었는데, 문제를 풀면서 "이걸 내가 실전에서 풀 수 있을까?" 를 계속 의심하게 되었다. 이런 걱정의 원인이 코..
Programmers Level1 두 개 뽑아서 더하기 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 입출력 예 numbers result [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 주어진 배열에서 크기가 2인 조합을 찾는 문제이다. 크기가 주어진 조합은 브루트포스로 n중 for문을 통해 무식하지만 간단하게 구할 수 있다. 조합의 요소 합을 구하고, 중복을 제거한 후 정렬한 결과를 int [] 로 리턴하면 되는 문제였다. 알고리즘적인 문제는 바로 생각해냈는데, 중복을 제거하고 정렬해서 다시 int[] 을 어떻게 만들지에서 막혔던 문제였다..
본격적인 코딩 테스트 준비 시작 취준을 맞이하게 되면서 이전보다 좀 더 본격적으로 코딩 테스트를 준비하게 되었다. 실제로 어떤 기업들이 코테를 시행하는지, 각 기업이 어떤 코테 환경을 제공하는지도 알아보기 시작했다. 그러면서 내가 지원하고 싶은 대부분의 기업이 프로그래머스 라는 플랫폼에서 코딩테스트를 진행한다는 것을 알게 되었다. 이전까지는 주로 백준을 풀었다. 백준은 입력값을 받는 코드까지 사용자가 직접 입력해야 해서 살짝 복잡한 감이 있었다. 그래서 백준은 플랫폼에서 바로 풀지 않고 vscode를 사용해서 문제를 풀었다. 그렇다고 프로그래머스에서의 문제풀이 경험이 없던 것은 아니였다. 이전에 파이썬으로 알고리즘 문제를 풀 때, 몇 번 이용해본 적 있었다. 하지만 이제는 파이썬이 아닌 자바를 사용하기에, 테스트겸 한 문제를 풀어보았다..
자바스크립트 Object Deep Copy 자바스크립트를 쓰다보면 겹겹이 쌓인 깊은 객체를 복사할 일이 생긴다. 근데 일반 변수처럼 단순히 =으로 복사할 수 없다. 객체정보가 아니라 해당 객체의 주소값이 =으로 전달되기 때문이다. (그 상태로 진짜 복사된줄 알고 복사본을 수정한다면.. 끔찍한 일이 벌어진다.) 그게 싫어서 객체를 파고 들어가며 프로퍼티를 일일히 하드코딩으로 옮길 수도 있다. 글로만 봐도 꺼려진다. 이번 포스팅에서는 객체를 복사하는 다양한 방법에 대해 알아보자. Object.assign const obj1 = { a: 1, b: { c: 1, }, }; const assignCopy = Object.assign({}, obj1); assignCopy.a = 5; assignCopy.b.c = 5; console.log(obj1 ==..
기초로 자신감 붙이기 갑자기 웬 기초? 작년 처음 리액트를 접하면서 프론트엔드 파트에 관심을 가지게 된 나는 순수 자바스크립트를 제대로 공부한 경험이 없었다. 거의 자바스크립트를 처음 접하면서 리액트 프로젝트에 참여해야 했기 때문에, 상당히 얼렁뚱땅 기능을 구현했다. 기초가 되어있지 않으니 사실상 그 과정이 계란으로 바위를 치는 것과 유사했다. 이후 창업 프로젝트에서 혼자 웹페이지 구현을 맡게 되었을 때는 "리액트를 기초부터 이해하려고 노력하자!" 라는 마음을 먹었다. 리액트 공식 문서도 읽어보고, 주로 같이쓰이는 상태관리 라이브러리인 리덕스를 이해하려고 다양한 포스팅을 접했다. 물론 그 시도가 아예 무의미했던 것은 아니였다. 하지만 자바스크립트와 브라우저 자체에 대한 이해가 부족하다보니 리액트 문서를 읽어도 읽어도 완벽하게..
Service Worker 이론 지금 진행하는 프로젝트는 구글의 Firebase를 이용한다. 데이터는 Firestore에 저장하며, 이미지는 Storage를 이용하고 경로를 Firestore에 표기하는 식으로 이용한다. 따라서 User A의 프로필 이미지를 가져오려면, 먼저 Firestore에서 해당 유저의 데이터를 요청한 후, 가져온 데이터 안의 이미지 경로를 Firebase의 메소드를 이용해 Storage에서 요청한다. 그럼 저장된 이미지를 Url형태로 받을 수 있다. 그럼 Url을 이용해 로 이미지를 fetch 한다. 매번 페이지를 이동할 때마다 두번 요청을 하고 받는 것은 1. 성능에 있어 부담스럽고 (이미지는 비교적 큰 데이터이므로) 2. 느려터진다 (어쨌든 과정을 한번 더 거쳐야 하니) 처음 Storage경로로 이미지의 Ur..
Asynchronous? Blocking? MDN 문서로 비동기 처리에 대한 글을 읽다가 web worker를 사용한 예시를 보았다. 바로 아래에 이런 문구가 있었는데, The second problem is that although code run in a worker is not blocking, it is still basically synchronous. 이걸 보자 3학년 네트워크 프로그래밍 시간에 보았던 표가 생각났다. 시험기간에 고생했던 기억을 떠올리며 Blocking과 Asynchronous가 어떻게 다른지에 대해 알아보려 한다. Blocking, NonBlocking 블로킹은 control과 관련이 있다. 메인에서 코드가 쭉 실행되다가, 어떤 함수가 호출되면서 control을 가져가서 그 함수가 return 하기 전까지 뒤 메인은 ..
2020 회고 코로나로 사라져버린 내 2020... 기간 별 요약을 해본 다음 해내서 좋았던 것 또, 아쉬웠던 부분 이렇게 두 가지로 나누어서 간단하게 되돌아보고자 한다. 1월, 2월 3학년도 끝났겠다 뭐라도 해야지 하는 마음에 동아리 친구가 진행하는 프로젝트에 프론트엔드 파트로 참여하게 되었다. 이때는 자바스크립트 문법도 제대로 모르던 시절이다. 무작정 노마드코더 강의 몇 개 듣고, 프로젝트를 시작했다. 이후로 프론트엔드 개발자가 꿈이 되어버린 걸 생각하면 역시 사람일은 어떻게 될지 모... 3월 개강! 학교 수업은 많진 않았지만, 꽤 신경써야할 과목들이 있었다. 컴퓨터 비전, 캡스톤이 대표적이었다. 4월 내 기억엔 이맘때 부터 간단하게 알고리즘 스터디를 했다. 백준 여러 분야들을 차례로 풀어보는 스터디였다. 생각보..