The development path of becoming a server person (reproduced)

Server-side development is a subdivision of developers with strong technical requirements and higher requirements for logical thinking. It is different from front-end, mobile, etc. Many of the latter are doing UI-oriented things, while the server-side only deals with logic and business. Therefore, in terms of long-term career planning, engaging in server-side development as the starting point of the technical road is very beneficial in the long run.

The web server side will be gradually subdivided according to the type of service: small companies and small businesses are generally simple engineering, simple deployment, and various development options (php, Java, Python, Node.js...) The services recruited at this time The end mainly depends on the familiarity with the language, and the general requirement is to get it quickly.

As the complexity of business increases, medium to large companies start to split the structure, do some service, middleware, and in recent years, there are data analysts who specialize in data analysis (big data, machine learning). Evolved on the server side. In some companies, even the business logic development of web containers (what I do) is called front-end, while the real back-end is to do data analysis, recommendation system, algorithm support and so on. At this time, recruiting web servers often requires business architecture capabilities, how to decouple and modularize a project, and how to do distribution.

Inner Strength

In fact , if you master a language for common web server development, you can get started by learning two frameworks. However, you must master all relevant foundations for subsequent improvement. This foundation includes the protocol layer (TCP/IP), operation system knowledge.

For example, how to configure nginx server parameters under heavy traffic? There will be various problems when traffic enters the server: connection storms for connection recovery, how to limit current for high-concurrency spike-type applications, how to optimize memory constraints, the number of connections, cpu, and memory. How to analyze where the bottleneck is when it is full? At this time, people who only know a few frameworks are completely confused, and they must analyze the reasons from the lower level of the computer.

When you first enter the workplace, you can only interview for ordinary server-side development (non-senior) to gain some project experience, form your own set of problem analysis methodology, and experience in designing and building a complex system.

Internal skills include:

server-side language and mature framework in a certain direction:

It is recommended to use traditional ones, such as Java and PHP. Some cutting-edge ones are not stable and not suitable for you to play, such as Python, Node.js (Javascript), GO, scala. Must be proficient, not negotiable.
Common frameworks need to be proficient, otherwise you will not be recruited if you can't get started quickly.

For example, the Java stack needs to understand Spring, MyBatis, container Tomcat, Jetty

extension

distributed RabbitMQ (ActiveMQ), zookeeper, hadoop visual inspection will become a necessary skill in the future, do understand. Tool jar package apache series: common-lang.jar, common-io.jar, common-bean.jar. Search ElasticSearch (lucene, solr)
Python stack needs to know django, Flask At least one of the
PHP stack I only know one Lavarel, 囧

Appropriate full stack full stack is the trend, at least you need to know a little bit about the page, including html, Javascript, css
Commonly used JavaScript frameworks and standards: CommonJs, jQuery, Bootstrap
extensions (selective understanding): Angular, React, vue, Backbone, zepto (Enough is enough, as soon as you enter the front-end as deep as the sea)

Related tools
Collaboration : Git use

Database
MySQL must be proficient, no Negotiable. Nosql needs to understand: MongoDB, Redis, Memcached principles and basic deployment methods and usage methods.

Review data structures and basic algorithms
This level of interview is to test linked lists, stacks, binary trees, B+ trees, and quick sorts, and it is impossible to answer them.

Design patterns
need to be refined and usually used a few, understand most of them. Such as factory mode, state mode, command mode, decoration mode...

Network foundation and operating system
TCP/IP protocol, unix system experience, shell programming and so on. . If you can tell the basic startup process of unix, as well as some commands used in common analysis problems, such as sar, free, du, top, awk, sed, etc., the Java stack has jmap, jstat, jstack, etc., it should be a bonus .


Application Skills - Resume

1. Don't make mistakes in the spelling of professional terms, don't write Java, you must write Java. Don't write mysql, write MySQL.

2, do not a lot of proficient xx. When I saw this kind of resume, I directly passed it, and I couldn't figure out his bottom line. I had to ask in an interview. I didn't know how to ask if the resume had no direction. Proficient in what is what, you can write more specific, such as proficient in Java, which part can be proficient in writing, is it socket or multi-threading? If you don't know it, don't write it.

3. Prepare your resume for the other company. You can learn in detail what the department you are going to do, what products are currently available, what are the defects of the products, what is the core value of the technology, what are the technical difficulties, and what advantages do you have in this regard. With the same technology, HR likes well-prepared people.

4. It is better to consolidate the foundation first and then go to the interview. If you do not master the basic knowledge mentioned above, the interview will generally fail unless the interviewer is blind.

Write so much first, and will write about development interview skills in the future.

Reprint link: http://www.jianshu.com/p/814d05d

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326772012&siteId=291194637