๐Ÿ“ƒ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐ๋ทฐ ๋ฌธ์ œ ๋‹ตํ•ด๋ณด๊ธฐ #7 cookie, sessionStorage, localStorage ์‚ฌ์ด์˜ ์ฐจ์ด์ ์„ ์„ค๋ช…ํ•˜์„ธ์š”.

Jake Seoยท2020๋…„ 6์›” 11์ผ
3
post-thumbnail

Prologue

๊นƒํ—ˆ๋ธŒ๋ฅผ ๋Œ์•„๋‹ค๋‹ˆ๋‹ค๊ฐ€ ์˜ˆ์ „์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์ด๋ผ๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณธ์ ์ด ์žˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ ๋‹น์‹œ์—๋Š” ๊ทธ๋ƒฅ ์Šคํƒ€๋งŒ ๋ˆŒ๋Ÿฌ๋†“๊ณ  ํฐ ๊ด€์‹ฌ์ด ์—†์—ˆ์ง€๋งŒ ์ง€๊ธˆ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋งŽ์€ ๋‹ต๋“ค์ด ์ด๋ฏธ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž‘์„ฑ๋˜์–ด ์žˆ๊ธด ํ•œ๋ฐ, ์ž‘์„ฑ๋˜์ง€ ์•Š์€ ๊ฒƒ๋“ค๋„ ์žˆ๊ณ  ๋‚ด ๋‹ต์ด๋ž‘ ๋ชจ๋ฒ”๋‹ต์•ˆ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ ์ •

๊ธฐ์กด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋Š” ๋ฌธ์ œ์˜ ๋ถ„๋ฅ˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  1. General Questions
  2. HTML Questions
  3. CSS Questions
  4. JS Questions
  5. Accessibility Questions (external link)
  6. Testing Questions
  7. Performance Questions
  8. Network Questions
  9. Coding Questions
  10. Fun Questions

๋งค์ผ 1๊ฐ€์ง€์”ฉ ๋Œ์•„๊ฐ€๋ฉฐ ํ’€ ๊ฑด๋ฐ, General Questions ํ•ญ๋ชฉ์—์„œ ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” ํ’€์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์˜ ์ •์˜๋Š” ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ต์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผํ…Œ๋ฉด...

What did you learn yesterday/this week? (์–ด์ œ/์ด๋ฒˆ์ฃผ์— ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜์š”)
What excites or interests you about coding? (๋ฌด์—‡์ด ๋‹น์‹ ์„ ์ฝ”๋”ฉํ•˜๊ณ  ์‹ถ๊ฒŒ ๋งŒ๋“œ๋‚˜์š”?)
What is a recent technical challenge you experienced and how did you solve it?(์ตœ๊ทผ์— ๊ฒช์€ ๊ธฐ์ˆ ์ ์ธ ์–ด๋ ค์›€๊ณผ ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”)

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ๋‹ต๋ณ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๊ทธ๋•Œ๊ทธ๋•Œ ๋‹ต์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‚˜์˜ ๋‹ต๋ณ€์€ ๋†’์€ ํ™•๋ฅ ๋กœ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์•„๋‹ˆ๋ฉด ๋งž๊ฒŒ ๊ฐ€๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ์ด์ƒํ•œ ๊ธธ๋กœ ๋น ์งˆ ์ˆ˜๋„ ์žˆ๋‹ค. ๋Œ“๊ธ€์— ์ž์‹ ๋งŒ์˜ ๋‹ต์„ ์˜ฌ๋ ค์ฃผ๋ฉด ๋งค์šฐ ๊ณ ๋งˆ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์›๋ฌธ : Describe the difference between a cookie, sessionStorage and localStorage.

A: ์…‹ ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ ์ €์žฅ์†Œ ์†”๋ฃจ์…˜

์œ„ ์„ธ ๊ฐ€์ง€ ๊ธฐ์ˆ ์€ ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” key-value ์ €์žฅ์†Œ ๋งค์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋‘ ๋ฌธ์ž์—ด๋กœ๋งŒ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒํ™ฉ์— ๋”ฐ๋ผ 3๊ฐ€์ง€ ์ค‘ ์„ ํ˜ธ๋˜๋Š” ์ €์žฅ์†Œ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋‚˜ ์ด์šฉ์ž์˜ ๊ธฐ๊ธฐ ๋“ฑ์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ €์žฅ์†Œ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” DB๋‚˜ XML, text, CSV์™€ ๊ฐ™์€ ๊ฒƒ์„ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— localStorage, sessionStorage, cookie๋Š” ๋ชจ๋‘ ํด๋ผ์ด์–ธํŠธ ์ €์žฅ์†Œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. session data๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ปจํŠธ๋กคํ•˜๋Š” ์„œ๋ฒ„ ๋‚ด์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์™€ ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์™€ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋น„๊ต์  ์ƒˆ๋กœ์šด API์— ์†ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์˜›๋‚  ๋ธŒ๋ผ์šฐ์ €๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ์ €์žฅ์†Œ๋Š” ์ƒ๋‹นํžˆ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋น„์Šทํ•œ API๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๋ฐ์ดํ„ฐ ์ง€์†์„ฑ ์˜ ์ธก๋ฉด์—์„œ๋Š” ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์ด ์œ ์ง€๋˜๋Š” ๋™์•ˆ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ํƒญ์œผ๋กœ ๊ฐ€๊ฑฐ๋‚˜ ์œˆ๋„์šฐ๋ฅผ ๋‹ซ์•˜์„ ๋•Œ ๋ฐ์ดํ„ฐ๋Š” ์ง€์›Œ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ•  ๋•Œ์—๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋งŒ์ผ, ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ณ„์† ์œ ์ง€๋˜๊ธธ ๋ฐ”๋ž€๋‹ค๋ฉด ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์‚ญ์ œํ•  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ ํ•œ๊ฐ€์ง€ ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋“  ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€๋“  ๋งˆ์Œ๋Œ€๋กœ ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ์ง€์šฐ๊ณ  ๋ณ€์กฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๋Š” ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋‚˜ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€์— ์ €์žฅํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‘ ์ €์žฅ์†Œ์˜ ์ €์žฅ์šฉ๋Ÿ‰์€ ๋Œ€๋žต 2.5mb~5mb์ •๋„๋กœ ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค๋งŒ, ๊ฐ€๋” ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๊ธฐ๊ธฐ๋ณ„๋กœ ์ƒ์ดํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์ฟ ํ‚ค

์ฟ ํ‚ค๋Š” ๋งŒ๋ฃŒ ๊ธฐํ•œ์ด๋ž€ ํŠน์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์ž๋„๊ตฌ ์ฝ˜์†” ์ฐฝ์— document.cookie๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์น˜๋ฉด ์ฟ ํ‚ค ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (HTTP only flag๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์“ธ ์ˆ˜ ์—†๊ฒŒ ๋ง‰์•„๋‘” ์ฟ ํ‚ค๋Š” ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.) ์ฟ ํ‚ค์—๋Š” 4kb์˜ ์šฉ๋Ÿ‰ ์ œํ•œ์ด ์žˆ๊ณ , ์ฟ ํ‚ค๊ฐ€ ์ €์žฅ๋˜๋ฉด ๋งค ์„œ๋ฒ„ ์š”์ฒญ๋งˆ๋‹ค ์„œ๋ฒ„๋กœ ์ฟ ํ‚ค๊ฐ€ ๊ฐ™์ด ์ „์†ก๋ฉ๋‹ˆ๋‹ค.

์œ„ ๋‘ ์ €์žฅ์†Œ์˜ ๋ฐ์ดํ„ฐ๋Š” ์„œ๋ฒ„๋กœ ์ž๋™ ์ „์†ก๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฟ ํ‚ค์˜ ๋ณด์•ˆ ๋ฌธ์ œ

๋งŒ์ผ SSL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค๋ฉด, ์ฟ ํ‚ค ์ •๋ณด๋Š” ์ „์†ก ๋„์ค‘ ํƒˆ์ทจ๋‹นํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณต์šฉ ์™€์ดํŒŒ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ๊ธ์ •์ ์ธ ๋ถ€๋ถ„์„ ๋ณด์ž๋ฉด, ์ฟ ํ‚ค๋Š” XSS(Cross Site Scripting) ์ธ์ ์…˜๊ณผ ๊ฐ™์€ ๋ณด์•ˆ ์œ„ํ˜‘์— ๋Œ€ํ•œ ๋ฐฉ์–ด๋ฐฉ๋ฒ•์ด ์žˆ๊ธด ํ•ฉ๋‹ˆ๋‹ค. HTTP only flag๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋˜ ๋ธŒ๋ผ์šฐ์ €๋“ค์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์˜ํ•œ ์ฟ ํ‚ค์™€ ๋ฐธ๋ฅ˜์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๋ง‰์•„์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ •๋ณด์™€ ๊ฐ™์€ ํ† ํฐ์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ธ์ฆ ์ฟ ํ‚ค์—๊ฒŒ ์ด๋Ÿฌํ•œ ํŠน์„ฑ์€ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ํ•ด๋‹น ํ† ํฐ์ด ํƒˆ์ทจ๋‹นํ•˜๊ณ  ๋ˆ„๊ตฐ๊ฐ€ ๋™์ผํ•œ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋˜ ์‚ฌ์šฉ์ž์˜ ๋ชจ๋“  ๊ถŒํ•œ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€ vs ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€ vs ์ฟ ํ‚ค

๊ธฐ๋Šฅ์˜ ๊ด€์ ์œผ๋กœ ๋ดค์„ ๋•Œ, ์ฟ ํ‚ค, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๋Š” ๋ชจ๋‘ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์•”๋ฌต์ ์œผ๋กœ ์–ด๋– ํ•œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด๋„ ๋ฌผ๋ก  ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์˜ค๋ธŒ์ ํŠธ๋‚˜ ๋ฐฐ์—ด๊ณผ ๊ฐ™์€ ๊ฐ’์„ ์ง์ ‘ ๋„ฃ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ธธ ์›ํ•œ๋‹ค๋ฉด ์ผ๋‹จ JSON๊ณผ ๊ฐ™์€ ์ง๋ ฌํ™”๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ํ˜•์‹์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ์ฝ์€ ํ›„์— ํŒŒ์‹ฑ์„ ํ•ด์ฃผ์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€, ์ฟ ํ‚ค๋Š” ๋ชจ๋‘ "same-origin" ๊ทœ์น™์— ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ๋ง์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋„๋ฉ”์ธ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๊ด€๋ฆฌํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค.

cookielocalStoragesessionStorage
์ƒ์„ฑ์žํด๋ผ์ด์–ธํŠธ๋‚˜ ์„œ๋ฒ„. ์„œ๋ฒ„๋Š” Set-Cookie ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹คํด๋ผ์ด์–ธํŠธํด๋ผ์ด์–ธํŠธ
๋งŒ๋ฃŒ์ˆ˜๋™์œผ๋กœ ์„ค์ •์˜๊ตฌ์ ํƒญ์„ ๋‹ซ์„ ๋•Œ
๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜ ์ „์ฒด์—์„œ ์ง€์†๋งŒ๋ฃŒ ์„ค์ • ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฆ„OX
๋ชจ๋“  HTTP ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์„œ๋ฒ„๋กœ ๋ณด๋ƒ„์ฟ ํ‚ค๋Š” Cookie ํ—ค๋”๋ฅผ ํ†ตํ•ด ์ž๋™ ์ „์†ก๋จXX
์šฉ๋Ÿ‰ (๋„๋ฉ”์ธ๋‹น)4kb5MB5MB
์ ‘๊ทผ์„ฑ๋ชจ๋“  ์œˆ๋„์šฐ๋ชจ๋“  ์œˆ๋„์šฐ๊ฐ™์€ ํƒญ

๋ ˆํผ๋Ÿฐ์Šค

https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API
https://www.zerocho.com/category/HTML&DOM/post/5918515b1ed39f00182d3048
https://stackoverflow.com/questions/19867599/what-is-the-difference-between-localstorage-sessionstorage-session-and-cookies
https://github.com/yangshun/front-end-interview-handbook/blob/master/contents/en/html-questions.md

profile
ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š” Jake Seo์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ Jake Seo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ๋งŽ์ด ์”๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ: Javascript, React ๋ฐฑ์—”๋“œ: Spring Framework์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€