하석재 강사님
오프라인 특강
매주 금요일 3시 ~ 5시 특강 진행 예정
프로그래머스 프로젝트는 개인(cloning project, 기능구현 추가해보기)
채용연계 - 회사에서 준 주제를 진행하고, 멘토링도 하고 채용까지 연계되는 형태
SPA(Single Page Application)
웹은 클릭할 때 마다 다른 페이지가 나온다.
한 프로그램 내에서 화면이 전환되는 형태로 바꾸자.
ex) React, Angular, Vue
JavaScript의 객체지향 버전 : TypeScript
비동기가 무엇인가?
MSA, Docker -> 요즘 트렌드
컴포넌트와 MSA
객체지향의 상속은 소스레벨 재사용성(소스가 있어야만 가능한 한계)
컴포넌트
property를 통한 호출 및 제어 가능
MS IDL(MIDL)
자바는 .class file에 Reflaction이라는기능 (IDL 없이도 메서드, 필드의 기능을 알아낼 수 있음
분산컴포넌트기술
컴포넌트
- CORBA(원조)
- MS
-MS COM(Component Object Model) / COM+ / DCOM(Distributed COM)
- 자바
- 빈(Java Beans)
- Enterprise Java Beans(EJB)
- Sprint Bean
MSA(Micro-service Architecture)
- 모노리틱 아키텍처는 한 덩어리
- 애플리케이션 로직을분리, 서비스 별로 로드밸런서를 연결하는 방식
조각을 내면서도 효율화시키는
컴파일된 형태의 재활용이다.
프로그래머스 - 프론트엔드 미니 데브코스
- 기본기를 탄탄하게, 상식을 기르기
- 정답을 찾는 과정을 즐기기
- 내가 무엇을 잘 하고 못하는지 파악하기
- 공부한 것은 꼭 기록하고 가급적이면 공개하기
- 질문을 두려워하지 않기
면접질문
- 스스로 해결하기 힘들다 판단되는 문제는 어떻게 처리하나요? (어려웠던 경험, 어떻게 해결했는지)
- 앞으로 실력이 좋아졌을 때 만들어보고 싶은 SW? (직업에 대한 목표 의식이나 도전 의지)
- 개발을 잘 모르는 팀원이 당장 작업하기 어려운 작업을 요구했다면 어떻게 해결? (커뮤니케이션 불화를 어떻게 해결, 태도에 대한 문제)
- 남들이 보는 나의 모습은? (자기객관화)
- 추상이란 무엇? 객체지향에서 추상이란 어떻게 적용되는가? (프로그래밍의 추상에 대해 고민해 본 적이 있는지)

JavaScript 탄생 배경
최초의 브라우저 : 네비게이터 (html로만 이루어진 정적인 브라우저)
-> Mocha = LiveScript = JavaScript(초기에는 간단한 언어)
서버 개발 : node.js NextJS, Express
앱 개발 : React Native, NativeScript, Cordova
프론트엔드 개발 : jQuery, Backbone.js, React, Vue, Angular(최근 3대장)
브라우저의 동작 원리
- 통신
- 렌더링
- 스크립트 실행
프론트엔드 개발자의 역할
- 브라우저 UI를 개발
- 다른 직군과 협업을 위한 소통능력이 중요
- 핵심 역량
- 커뮤니케이션
- UI 기본지식
- 네트워크
- 보안
- 브라우저
- 디자인
컴퓨터과학 무시, CSS 안하기, 코더가 되는 것 => 이런건 하지 말자
변수
var(권장하지 않음) : 호이스팅 때문(변수 선언이 상단으로 올라가버린다. 예상치 못한 오류)
let
상수 : 변하지 않는 수, 값을 바꿀 수 없음 (const)
자료형
Number(NaN, infinity도 포함), String, Boolean, Object(key), Array(index), Function, undefined, null
메모리
할당, 사용, 해제
메모리는 한정적 => JS는 Garbage Collector를 이용해 자동으로 사용하지 않는 메모리를 정리
Virtual Machine
Heap, CallStack으로 이루어짐
배열은 참조 타입이기 때문에 Heap에
Mark and Sweep Algorithm : 닿을 수 없는 주소를 더 이상 필요없는 주소로 생각하고 메모리를 비움
JS는 파일들을 각각 별개의 프로그램으로 생각
표현식(Expressions) : 어떠한 결과 값으로 표현되는 식
흐름제어(Control Flow)
조건, 반복을 통해 상태를 제어
- 조건문 if
- false, undefined, null, 0, NaN, ''(empty string)도 거짓이 될 수 있으니 주의
- switch(case에 default 작성 필수)
- 반복문 for(초기문, 조건문, 증감문)
- while(조건이 거짓이 될 때까지)
- do - while
배열에서 특정 값으로 초기화
const arr = new Array(n).fill(초기화할 값);
const arr = Array.from(초기화할 배열, function (배열의 값, 배열의 인덱스) {
....
}
배열의 length를 줄이면 뒤 요소가 사라짐
배열의 length를 늘리면 뒤에 빈 아이템이 추가됨
(사용하지 않는 것을 권장)
arr.join('어떻게합칠건데');
arr.reverse() : 요소를 거꾸로 뒤집기
arr.concat(arr2) : 두 배열 합치기
push : 배열의 끝에서 추가
pop : 배열의 끝에서 삭제, return값은 삭제된 요소
shift : 맨 앞의 요소 제거
unshift : 맨 앞에 요소 추
splice(index, 몇개)
배열 순회는 for of문 : ex) const item of arr
객체
new Object(); or {}
Object.keys()
Object.values()
객체 순회는 for in
클로저를 이용하여 내부 변수와 함수를 은닉화 할 수 있다. -> 알기 힘든 버그를 잘 수정하기 위해 유용
코딩테스트 - 피보나치 계산

n = int(input())
F = [0] * 30
F[1] = 1
for i in range(2, n+1):
F[i] = F[i-2] + F[i-1]
print(F[n])
dp를 이용해 해결했다..
'SW Academy' 카테고리의 다른 글
[CNU SW Academy] 6일차(22.12.08.) (0) | 2022.12.08 |
---|---|
[CNU SW Academy] 5일차(22.12.07.) (0) | 2022.12.07 |
[CNU SW Academy] 4일차(22.12.06.) (0) | 2022.12.06 |
[CNU SW Academy] 3일차(22.12.05.) (1) | 2022.12.05 |
[CNU SW Academy] 1일차(22.12.01.) (2) | 2022.12.01 |