Career/Let's Get a Job

프론트엔드로 취업하기1 - 프론트엔드?

Nomad Kim 2021. 1. 16. 15:55

Front-End Developer?

A front-end dev is responsible for the interior design of a house that’s been built by a back-end dev.

Front-end developers are responsible for a website’s user-facing code and the architecture of its immersive user experiences.

“The developers that work on the front end are sometimes more excited about what they do because they’re really able to leverage their creativity.”

 

What need to do?

In order to execute those objectives, front-end devs must be adept at three main languages: HTML, CSS, and Javascript programming. In addition to fluency in these languages, front-end devs need to be familiar with frameworks like Bootstrap, Foundation, Backbone, AngularJS, and EmberJS, which ensure great-looking content no matter the device, and libraries like jQuery and LESS, which package code into a more useful, time-saving form. A lot of front-end developer job listings also call for experience with Ajax, a widely used technique for using Javascript that lets pages dynamically load by downloading server data in the background.

 

HOW IT TRANSLATES

Everything you’re seeing on this website right now was made possible by a front-end developer. A designer crafted the logo and graphics, a photographer took the pictures, and a copywriter wrote the text. But a front-end dev assembled all of those pieces, translated them into web-speak, and built the experience you have with each page. To take one specific example, scroll up and down on the Udacity homepage. Notice how the “U” disappears and reappears? That’s the handiwork of a front-end developer.

 

(Source : blog.udacity.com/2014/12/front-end-vs-back-end-vs-full-stack-web-developers.html)

 


프론트엔드 로드맵(공부해본 파트 표시)

 

 

 

 

백엔드 로드맵(공부해본 파트 표시)

 


코딩테스트를 하는이유?

 

프론트엔드도 자료구조, BigO(시간과 공간 복잡도), 알고리즘에 대한 이해도를 파악하기 위함.

 

Why Data Structures and Algorithms Are Important to Learn?

 

The problem faced by these companies is much harder and at a much larger scale. Software developers also have to make the right decisions when it comes to solving the problems of these companies. 

Knowledge of data structures like Hash Tables, Trees, Tries, Graphs, and various algorithms goes a long way in solving these problems efficiently and the interviewers are more interested in seeing how candidates use these tools to solve a problem. Just like a car mechanic needs the right tool to fix a car and make it run properly,

 

a programmer needs the right tool (algorithm and data structure) to make the software run properly.

 

So the interviewer wants to

 

find a candidate who can apply the right set of tools to solve the given problem.

 

If you know the characteristics of one data structure in contrast to another you will be able to make the right decision in choosing the right data structure to solve a problem. 

 

Engineers working in Google, Microsoft, Facebook, Amazon-like such companies are different than others and paid higher as compared to other companies…but why?

 

Most of the time goes into designing things with the best and optimum algorithms to save on the company’s resources (servers, computation power, etc). This is the main reason why interviews in these companies are focused on algorithms as they want people who can think out of the box to design algorithms that can save the company thousands of dollars.

 

Example: Suppose you are working in Facebook company. You come up with an optimal solution of a problem (like sorting a list of users from India) with a time complexity of O(nLogn) instead of O(n^2) and assume that n for the problem here for the company in real life scenario is 100 million (very fair assumption considering the number of users registered on facebook exceeds 1 billion).

 

nLogn would be 800 million, while n^2 would be 10^7 billion. In cost terms, you can see that the efficiency has been improved more than 10^7 times, which could be a huge saving in terms of server cost and time. 


Now you might have got that companies want to hire a smart developer who can make the right decision and save company resources, time and money. So before you give the solution to use a Hash table instead of List to solve a specific problem think about the big scale and all the case scenarios carefully. It can generate revenue for the company or the company can lose a huge amount of money.  

 

To Solve Some Real World Complex Problems

Now take the example of a library. If you need to find a book on Set Theory from a library, you will go to the maths section first, then the Set Theory section. If these books are not organized in this manner and just distributed randomly then it will be frustrating to find a specific book. So data structures refer to the way we organize information on our computer. Computer scientists process and look for the best way we can organize the data we have, so it can be better processed based on input provided. 

 

A lot of newbie programmers have this question that

 

where we use all the stuff of data structure and algorithm in our daily life and how it’s useful in solving the real-world complex problem.

 

  • Facebook (Yes… we are talking about your favorite application). Can you just imagine that your friends on facebook, friends of friends, mutual friends they all can be represented easily by Graph? Relax….sit for a couple of moments and think again…you can apply graph to represent friends connection on facebook.
  • If you need to keep a deck of cards and arrange it properly how would you do that? You will throw it randomly or you will arrange the cards one over another and from a proper deck. You can use Stack here to make a proper arrangement of cards one over another.
  • If you need to search a word in the dictionary, what would be your approach? Do you go page by page or you open some page and if the word is not found you open a page prior/later to one opened depending upon the order of word to the current page (Binary Search).

 

출처: www.geeksforgeeks.org/why-data-structures-and-algorithms-are-important-to-learn/

 

 

‘자료구조와 알고리즘’은 시간 복잡도와 공간 복잡도를 계산하는 방법들을 알려주고 가장 많이 쓰이는 자료구조와 알고리즘을 통해 복잡도를 계산하는 방법을 이해시키는 것이다. 결국, 시간이 지나면 디테일은 사라지고 남는 지식은 각각의 자료구조와 알고리즘이 어떤 용도로 쓰이며 얼만큼의 시간 및 공간 복잡도를 갖는지 정도지만, 이를 통해 코드의 O(n)을 계산하는 능력을 얻게 된다.

이 지식과 능력을 바탕으로 어떤 자료구조를 선택해야 하는지와 나의 구현이 실제로 제품에 적용하기에 적합한지를 판단할 수 있는 것이다.

 

출처: medium.com/@ghilbut/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EC%9D%84-%EC%9E%98%ED%95%98%EB%8A%94-5%EA%B0%80%EC%A7%80-%EB%B0%A9%EB%B2%95-1-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B3%B5%EB%B6%80%ED%95%98%EA%B8%B0-ebf3a3f79ee2

 


1. 자료구조

출처: https://www.quora.com/What-is-data-structure-and-types-of-data-structures

+ Binary Search Tree

+ Hash Table

 

2. BigO

 

각 자료구조 마다 장단점이 있는데, 결국 실제 서비스에 따라 시간복잡도를 얼만큼 단축시킬 수 있느냐의 문제이다.

복습할 것!

 

3. 알고리즘

 

어떠한 문제를 해결하기 위한 여러 동작들의 모임이다. 유한성을 가지며, 언젠가는 끝나야 하는 속성을 가지고 있다.

 

 

1) 알고리즘의 조건

 

  • 입력 : 외부에서 제공되는 자료가 0개 이상 존재한다.

  • 출력 : 적어도 2개 이상의 서로 다른 결과를 내어야 한다.(즉 모든 입력에 하나의 출력이 나오면 안됨)

  • 명확성 : 수행 과정은 명확하고 모호하지 않은 명령어로 구성되어야 한다.

  • 유한성(종결성) : 유한 번의 명령어를 수행 후(유한 시간 내)에 종료한다.

  • 효율성 : 모든 과정은 명백하게 실행 가능(검증 가능)한 것이어야 한다.

연구 분야

  • 고안 : 완벽한 자동화를 통한 알고리즘의 개발은 거의 불가능하다. 따라서 이미 증명된 유용한 알고리즘들을 습득함으로써 보다 유용한 알고리즘을 개발하는데 그 의미가 있다.
  • 검증 : 고안된 알고리즘이 합당한 입력값에 대하여 올바른 결과를 계산해 내는지를 밝히는 절차가 필요하다. 알고리즘 검증은 고안된 알고리즘이 프로그래밍 언어와는 독립적으로 올바르게 작동할 수 있음을 보여주는 데 그 목적이 있다.
  • 분석 : 고안된 알고리즘을 실행하기 위해 필요한 실행시간과 필요로 하는 기억장치를 결정하는 것이다.
  • 테스트 : 디버깅, 성능분석

3) 좋은 알고리즘의 분석 기준

  • 정확성 : 적당한 입력에 대해서 유한 시간내에 올바른 답을 산출하는가를 판단.
  • 작업량 : 전체 알고리즘에서 수행되는 가장 중요한 연산들만으로 작업량을 측정. 해결하고자 하는 문제의 중요 연산이 여러개인 경우에는 각각의 중요 연산들의 합으로 간주하거나 중요 연산들에 가중치를 두어 계산
  • 기억 장소 사용량 : 수행에 필요한 저장 공간
  • 최적성 :그 알고리즘보다 더 적은 연산을 수행하는 알고리즘은 없는가? 최적이란 가장 '잘 알려진' 이 아니라 '가장 좋은'의 의미이다
  • 복잡도. (점근 표기법 : Big-O Notation)
    • O(1) : 입력 자료의 수에 관계없이 일정한 실행 시간을 갖는 알고리즘
    • O(log N) : 입력 자료의 크기가 N일경우 log2N 번만큼의 수행시간을 가진다.
    • O(N) : 입력 자료의 크기가 N일경우 N 번만큼의 수행시간을 가진다.
    • O(N log N) : 입력 자료의 크기가 N일경우 N*(log2N) 번만큼의 수행시간을 가진다.
    • O(N2) : 입력 자료의 크기가 N일경우 N2 번만큼의 수행시간을 가진다.
    • O(N3) : 입력 자료의 크기가 N일경우 N3 번만큼의 수행시간을 가진다.
    • O(2n) : 입력 자료의 크기가 N일경우 2N 번만큼의 수행시간을 가진다.
    • O(n!) : 입력 자료의 크기가 N일경우 n*(n-1)*(n-2)... * 1(n!) 번만큼의 수행시간을 가진다. ex)외판원 문제(TSP)의 기본적인 해법

출처: opentutorials.org/course/2471/13912