Skip to content

Commit

Permalink
更新了部分文档
Browse files Browse the repository at this point in the history
  • Loading branch information
jackfrued committed Nov 4, 2018
1 parent 6d7fb90 commit 98e5036
Show file tree
Hide file tree
Showing 57 changed files with 2,071 additions and 585 deletions.
1,350 changes: 927 additions & 423 deletions Day91-100/Django知识点概述.md

Large diffs are not rendered by default.

15 changes: 8 additions & 7 deletions Day91-100/Docker简易上手指南.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
## Docker入门
## Docker简易上手指南

### Docker简介

软件开发中最为麻烦的事情可能就是配置环境了。由于用户使用的操作系统具有多样性,即便使用跨平台的开发语言(如Java和Python)都不能保证代码能够在各种平台下都可以正常的运转,而且可能在不同的环境下我们的软件需要依赖的其他软件包也是不一样的。

那么问题来了,我们再安装软件的时候可不可以把软件运行的环境一并安装课?也就是说在安装软件的时候,我们是不是可以把原始环境一模一样地复制过来呢?
那么问题来了,我们再安装软件的时候可不可以把软件运行的环境一并安装?也就是说在安装软件的时候,我们是不是可以把原始环境一模一样地复制过来呢?

虚拟机(virtual machine)就是带环境安装的一种解决方案,它可以在一种操作系统里面运行另一种操作系统,比如在Windows系统里面运行Linux系统,在macOS上运行Windows,而应用程序对此毫无感知。使用过虚拟机的人都知道,虚拟机用起来跟真实系统一模一样,而对于虚拟机的宿主系统来说,虚拟机就是一个普通文件,不需要了就删掉,对宿主系统或者其他的程序并没有影响。但是虚拟机通常会占用较多的系统资源,启动和关闭也非常的缓慢,总之用户体验没有想象中的那么好。

Expand Down Expand Up @@ -87,7 +87,7 @@ docker stop <container-id>
docker stop <name>
```

对于那些不会自动终止的容器,就可以用下面的方式来停止。
对于那些不会自动终止的容器,就可以用下面的方式来停止。

```Shell
docker container kill <container-id>
Expand All @@ -107,10 +107,10 @@ service docker start

```JavaScript
{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
```

Expand Down Expand Up @@ -195,3 +195,4 @@ select user, host, plugin, authentication_string from user where user='root';
2 rows in set (0.00 sec)
```

接下来就已经可以访问你的MySQL服务器啦,当然远程连接的时候不要忘了在防火墙上开启对应的端口。
Binary file added Day91-100/res/01.django_single_server.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/02.django_dedicated_db_server.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/04.django_load_balance.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/05.django_massive_cluster.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/Celery_RabitMQ.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/alipay_web_developer.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/aliyun-certificate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/aliyun-dnslist.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/aliyun-domain.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/aliyun-keeprecord.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/aliyun-resolve-settings.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/app_folder_arch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/builtin-middlewares.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/celery.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/click-jacking.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/company_architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/deployment_pipelines.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/django-middleware.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/django-mtv.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/django_request_response_cycle.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/docker_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/docker_vs_vm.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/er-graph.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Day91-100/res/git_logo.png
Binary file added Day91-100/res/git_repository.png
Binary file added Day91-100/res/gitignore_io.png
Binary file added Day91-100/res/greedy.png
Binary file added Day91-100/res/hadoop_ecosystem.png
Binary file added Day91-100/res/http-request.png
Binary file added Day91-100/res/http-response.png
Binary file added Day91-100/res/jenkins_new_project.png
Binary file added Day91-100/res/mvc.png
Binary file added Day91-100/res/oauth2.png
Binary file added Day91-100/res/power-designer-pdm.png
Binary file added Day91-100/res/pylint.png
Binary file added Day91-100/res/python-str-join.png
Binary file added Day91-100/res/python_jobs_chengdu.png
Binary file added Day91-100/res/python_salary_chengdu.png
Binary file added Day91-100/res/python_salary_guangzhou.png
Binary file added Day91-100/res/redmine_new_issue.png
Binary file added Day91-100/res/requirements_by_xmind.png
Binary file added Day91-100/res/selenium_ide.png
Binary file added Day91-100/res/shopping-pdm.png
Binary file added Day91-100/res/uml-graph.png
Binary file added Day91-100/res/uml.png
Binary file added Day91-100/res/web-application.png
Binary file added Day91-100/res/web-queue-worker-physical.png
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## 项目实战 - 开启团队项目
## 开启团队项目

### 创建项目

Expand Down
398 changes: 398 additions & 0 deletions Day91-100/电商网站技术要点剖析.md

Large diffs are not rendered by default.

22 changes: 10 additions & 12 deletions Day91-100/网络API接口设计.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,32 +61,33 @@ API接口返回的数据通常都是JSON或XML格式,我们这里不讨论后
请求参数:

| 参数名 | 类型 | 是否必填 | 参数位置 | 说明 |
| ------ | ------ | -------- | -------- | ------------------------------------ | |
| ------ | ------ | -------- | -------- | ------------------------------------ |
| page | 整数 || 查询参数 | 页码,默认值1 |
| size | 整数 || 查询参数 | 每次获取评论数量(10~100),默认值20 |
| key | 字符串 || 请求头 | 用户的身份标识 |

响应信息:

```JSON

{
"code": 10000,
"message": "获取评论成功",
"page": 1,
"size": 10,
"totalPage": 35,
"contents": [
{
"userId": 1700095,
"nickname": "王大锤",
"pubDate": "2018年7月31日",
"content": "小编是不是有病呀"
"content": "小编是不是有病呀",
/* ... */
},
{
"userId", 1995322,
"nickname": "白元芳",
"pubDate": "2018年8月2日",
"content": "楼上说得好"
"content": "楼上说得好",
/* ... */
}
]
Expand All @@ -108,16 +109,15 @@ API接口返回的数据通常都是JSON或XML格式,我们这里不讨论后

请求参数:

| 参数名 | 类型 | 是否必填 | 参数位置 | 说明 |
| ------- | ------ | -------- | -------- | ------------------------------------ |
| userId | 字符串 || 消息体 | 用户ID |
| token | 字符串 || 消息体 | 用户的令牌或URL的签名 |
| content | 字符串 || 消息体 | 评论的内容 |
| 参数名 | 类型 | 是否必填 | 参数位置 | 说明 |
| ------- | ------ | -------- | -------- | ---------- |
| userId | 字符串 || 消息体 | 用户ID |
| key | 字符串 || 请求头 | 用户的令牌 |
| content | 字符串 || 消息体 | 评论的内容 |

响应信息:

```JSON

{
"code": 10001,
"message": "创建评论成功",
Expand All @@ -129,5 +129,3 @@ API接口返回的数据通常都是JSON或XML格式,我们这里不讨论后
/* ... */
}
```


89 changes: 89 additions & 0 deletions Day91-100/英语面试.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
## 英语面试

以下用I表示面试官(Interviewer),用C表示面试者(Candidate)。

### 开场寒暄

1. I: Thanks for waiting. (Please follow me.)

C: It's no problem.

2. I: How are you doing this morning?

C: I'm great. / I'm doing fine. Thank you. / How about you?

3. I: How did you get here?

C: I took the subway here. / I drove here.

4. I: Glad to meet you.

C: Glad to meet you. / It's great to finally meet you in person. (之前电话沟通过的)

### 正式面试

#### 人力面试

1. I: Can you tell me a little bit about yourself? (介绍下自己)

原则:不要谈私生活和奇怪的癖好(英雄联盟干到钻石),因为别人更想知道的是你的专业技能(qulifications)和工作经验(experience),所以重点在你之前的公司(company name)、职位(title)、时间(years)和主要职责(major responsibilities)

C: Thank you for having me. My name is Dachui WANG. I'm 25 years old, and I'm single. I have a Bachelor's Degree of Computer Science from Tsinghua University. I was a Junior Java Programmer for ABC Technologies during my college life. Then I become an intermediate Java engineer for XYZ Corporation in last two years. Programming is my everyday life and programming is where my passion is. I think I have a good knowledge of Java enterprise application developement using light-weight frameworks like Spring, Guice, Hibernate and other open source middle-ware like Dubbo, Mycat, rocketmq and so on and so forth. I love reading, travelling and playing basketball in my spare time. That's all! Thank you!

2. I: How would you describe your personality? (你的性格)

C: I'm hard working, eager to learn, and very serious about my work. I enjoy working with other people and I love challenges.

3. I: What do you know about our company? (你对我们公司有什么了解)

(需要做功课,了解公司的状况和企业文化,该公司在这个行业中的一个状况,有什么核心业务,主要的竞争对手有哪些)

C: The one thing that I like the most about our company is your core values. I think they're very important in this industry because …(自由发挥的部分)... I personally really believe in the cause as well. Of course, I'm very interested in your products such as …(功课部分)… and the techniques behind them.

4. I: Why are you leaving your last job? (为什么离职)

C: I want to advance my career and I think this job offers more challenges and opportunities for me do to that.

5. I: What do you see yourself in 3 or 5 years? (3-5年职业规划)

C: My long term goals involve growing with the company, where I can continue to learn, to take on additional responsibilities and to contribute as much value as I can. I intend to take advantage of all of these.

6. I: What's your salary expectation? (期望薪资)

C: My salary expectation is in line with my experience and qualifications. I believe our company will pay me and every other employee fairly. (把球踢给对方先看看对方报价是多少,如果对方非要你报价再说后面的内容) I think 15 thousands RMB or above is fitting for me to leave in Chengdu.

7. I: Do you have any questions for me? (问面试官的问题)

C: What's the growth potential for this position?


#### 技术面试

1. I: What's difference between an interface and an abstract class?
2. I: What are pass by reference and pass by value?
3. I: What's the difference between process and threads?
4. I: Explain the available thread state in high-level.
5. I: What's deadlocks? How to avoid them?
6. I: How HashMap works in Java?
7. I: What's the difference between ArrayList and LinkedList? (类似的问题还有很多,比如比较HashSet和TreeSet、HashMap和Hashtable)
8. I: Tell me what you know about garbage collection in Java.
9. I: What're two types of exceptions in Java?
10. I: What's the advantage of PreparedStatement over Statement?
11. I: What's the use of CallableStatement?
12. I: What does connection pool mean?
13. I: Explain the life cycle of a Servlet.
14. I: What's the difference between redirect and forward?
15. I: What's EL? What're implicit objects of EL?
16. I: Tell me what you know about Spring framework and its benefits.
17. I: What're different types of dependency injection.
18. I: Are singleton beans thread safe in Spring framework?
19. I: What're the benefits of Spring framework's transaction management?
20. I: Explain what's AOP.
21. I: What's a proxy and how to implement proxy pattern?
22. I: How Spring MVC works?
23. I: What's the working scenario of Hibernate and MyBatis?
24. I: How to implement SOA?
25. I: Make a brief introduction of the projects you are involved before?


上面主要是面试Java程序员的问题,但是整个流程大致如此。
90 changes: 90 additions & 0 deletions Day91-100/面试中的公共问题.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
## 面试中的公共问题

### 计算机基础

1. TCP/IP模型相关问题。

> 建议阅读阮一峰的[《互联网协议入门(一)》](http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html)[《互联网协议入门(二)》](http://www.ruanyifeng.com/blog/2012/06/internet_protocol_suite_part_ii.html)
2. HTTP和HTTPS相关问题。

> 建议阅读阮一峰的[《HTTP 协议入门》](http://www.ruanyifeng.com/blog/2016/08/http.html)[《SSL/TLS协议运行机制的概述》](http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html)
3. Linux常用命令和服务。

4. 进程和线程之间的关系。什么时候用多线程?什么时候用多进程?。

5. 关系型数据库相关问题(ACID、事务隔离级别、锁、SQL优化)。

6. 非关系型数据库相关问题(CAP/BASE、应用场景)。

### Python基础

1. 开发中用过哪些标准库和三方库。

> 标准库:sys / os / re / math / random / logging / json / pickle / shelve / socket / datetime / hashlib / configparser / urllib / itertools / collections / functools / threading / multiprocess / timeit / atexit / abc / asyncio / base64 / concurrent.futures / copy / csv / operator / enum / heapq / http / profile / pstats / ssl / unitest / uuid
2. 装饰器的作用、原理和实现。

3. 使用过哪些魔法方法。

> 建议阅读[《Python魔术方法指南》](https://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-methods.html)
4. 生成式、生成器、迭代器的编写。

5. 列表、集合、字典的底层实现。

6. 垃圾回收相关问题。

7. 并发编程的相关问题。

8. 协程和异步I/O相关知识。

### Django和Flask

1. MVC架构(MTV)解决了什么问题。

2. 中间件的执行流程以及如何自定义中间件。

3. REST数据接口如何设计(URL、域名、版本、过滤、状态码、安全性)。

> 建议阅读阮一峰的[《RESTful API设计指南》](http://www.ruanyifeng.com/blog/2014/05/restful_api.html)
4. 使用ORM框架实现CRUD操作的相关问题。

- 如何实现多条件组合查询 / 如何执行原生的SQL / 如何避免N+1查询问题

5. 如何执行异步任务和定时任务。

6. 如何实现页面缓存和查询缓存?缓存如何预热?

### 爬虫相关

1. Scrapy框架的组件和数据处理流程。
2. 爬取的目的(项目中哪些地方需要用到爬虫的数据)。
3. 使用的工具(抓包、下载、清理、存储、分析、可视化)。
4. 数据的来源(能够轻松的列举出10个网站)。
5. 数据的构成(抓取的某个字段在项目中有什么用)。
6. 反反爬措施(限速、请求头、Cookie池、代理池、Selenium、PhantomJS、RoboBrowser、TOR、OCR)。
7. 数据的体量(最后抓取了多少数据,多少W条数据或多少个G的数据)。
8. 后期数据处理(持久化、数据补全、归一化、格式化、转存、分类)。

### 数据分析

1. 科学运算函数库(SciPy和NumPy常用运算)。
2. 数据分析库(Pandas中封装的常用算法)。
3. 常用的模型及对应的场景(分类、回归、聚类)。
4. 提取了哪些具体的指标。
5. 如何评价模型的优劣。
6. 每种模型实际操作的步骤,对结果如何评价。

### 项目相关

1. 项目团队构成以及自己在团队中扮演的角色(在项目中的职责)。
2. 项目的业务架构(哪些模块及子模块)和技术架构(移动端、PC端、后端技术栈)。
3. 软件控制管理相关工具(版本控制、问题管理、持续集成)。
4. 核心业务实体及其属性,实体与实体之间的关系。
5. 用到哪些依赖库,依赖库主要解决哪方面的问题。
6. 项目如何部署上线以及项目的物理架构(Nginx、Gunicorn/uWSGI、Redis、MongoDB、MySQL、Supervisor等)。
7. 如何对项目进行测试,有没有做过性能调优。
8. 项目中遇到的困难有哪些,如何解决的。
Loading

0 comments on commit 98e5036

Please sign in to comment.