멘토링 내용
•
Cache 처리 방법에 대해 알아보고, 직접 구현해봤습니다.
1.
Cache (캐시)란?
2.
iOS의 Cache
•
캐시의 종류
•
일반적인 캐싱 방법
3.
Cache 직접 구현해보기 (Image Cache)
•
Singleton을 적용한 ImageCacheManager 객체 생성
•
UIImageView extension 구현
1) 매개변수로 urlSring을 받음
2) 메모리 캐시가 있으면 해당 이미지를 적용
3) 메모리 캐시가 없으면 서버에서 받아오고 (비동기 처리), 메모리를 캐시에 저장
4) 해당 이미지를 적용
4.
라이브러리를 통해 Cache 정책 엿보기
<홈워크>
•
현재 진행중인 프로젝트에 Image Cache (메모리/디스크 캐시) 구현해보기
디스크 캐시 - FileSystem 활용해보기
// AlamofireImage > Source > ImageDownloader.swift
let cacheDirectory = FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first
// Kingfisher > Source > DiskStorage
url = config.fileManager.urls(for: .cachesDirectory, in: .userDomainMask)[0]
Swift
복사
•
URLCache 찾아보기 (메모리/디스크 캐시 선택적으로 구현 가능)
•
Kingfisher의 Cache 정책 찾아보기
•
NSCache와 Dictionary로 각각 캐시를 구성했을 때의 차이를 알아보기
•
이력서 첨삭
◦
전공자답게 프로그래밍 관련 다양한 경험을 한 것이 인상적!!
◦
전반적으로 깔끔하고 가독성이 좋아요!!
◦
Notion 설정 > Full Width 해제하는게 좋음 (면접관이 이력서 확인 시 모니터 절반 너비로 볼 가능성이 큼)
◦
Other Experience보다 iOS Projects를 상단에 배치하는게 좋을듯
◦
iOS Projects 정리할 때 문제점/해결방법을 별도로 정리 (플젝당 2개 정도)
-> 복잡한 문제를 끝까지 파고들어서 해결한 경험 적기. 면접에서 잘 물어봄
이력서에 대해 면접에서 나올 수 있는 질문
◦
안드로이드 UX/UI에 비해 iOS는 어떤 것 같나요?
◦
SOLID 원칙에 대해 예를 들어 설명해주세요.
◦
동료에게 공유하며 함께 성장하는 것을 지향하게 된 계기가 있나요?
◦
개발 중 경험한 문제 중에서 가장 해결하기 어려웠던 것과 어떻게 해결했는지 설명해주세요.
◦
경험해본 아키텍쳐에 대해 설명해주세요.
◦
Combine은 무엇이고 왜 사용하나요?