摘要:
很早之前,在.net平台下写过一个分析html代码的程序,那时候的思想是将html代码解析成一棵类似树的结构,然后在分析其中的标签。Python中,HTTPParser模块,更像是在过程中进行解析,模拟遇到开始标签怎样开始,怎样处理属性和值,又当遇到结束标签该怎样结束等等过程。对于格式规范、代码简洁的html容易解析,如果复杂、不规范的html解析会很繁琐。HTTPParser:HTMLParser是python用来解析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特... 阅读全文
摘要:
首先列一下,sellect、poll、epoll三者的区别 select select最早于1983年出现在4.2BSD中,它通过一个select()系统调用来监视多个文件描述符的数组,当select()返回后,该数组中就绪的文件描述符便会被内核修改标志位,使得进程可以获得这些文件描述符从而进行后续的读写操作。select目前几乎在所有的平台上支持,其良好跨平台支持也是它的一个优点,事实上从现在看来,这也是它所剩不多的优点之一。select的一个缺点在于单个进程能够监视的文件描述符的数量存在最大限制,在Linux上一般为1024,不过可以通过修改宏定义甚至重新编译内核的方式提升这一限制。... 阅读全文
摘要:
最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概了解了,在这里做一下简单的总结。 了解c语言的人,一定会知道struct结构体在c语言中的作用,它定义了一种结构,里面包含不同类型的数据(int,char,bool等等),方便对某一结构对象进行处理。而在网络通信当中,大多传递... 阅读全文
摘要:
什么是json:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。JSON建构于两种结构:“名称/值”对的集合(A collec 阅读全文
摘要:
最近比较闲,想学习一门脚本语言,于是选择了python进行学习,之前对脚本语言不是很熟悉,所以不对python好坏做任何评价。希望通过学习python,能让自己对脚本语言有更深刻的认识吧。Python的执行过程:当程序执行时,python内部会先将源代码编译成所谓的字节码的形式。字节码是源代码底层的、与平台无关的表现形式。编译字节码的过程中,会生成一个.pyc的文件,这个文件就是编译之后的字节码。Python真正在运行的就是这个字节码文件,如果生成字节码文件之后没有再修改过源代码的话,下次程序运行会跳过编译这个步骤,直接运行pyc文件,这是一种启动速度的优化。字节码文件被发送到python虚拟 阅读全文
摘要:
在《一致性hash算法(consistent hashing)》一文中已经介绍了一致性hash的基本原理,本文将会对其具体实现细节进行描述,并用c++语言对一致性hash进行了简单的实现。 一致性hash算法实现有两个关键问题需要解决,一个是用于结点存储和查找的数据结构的选择,另一个是结点hash算法的选择。 首先来谈一下一致性hash算法中用于存储结点的数据结构。通过了解一致性hash的原理,我们知道结点可以想象为是存储在一个环形的数据结构上(如下图),结点A、B、C、D按hash值在环形分布上是有序的,也就是说结点可以按hash值存储在一个有序的队列里。如下图所示,当一个hash值为-2. 阅读全文
摘要:
一面不写了,基础、简单。直接上二面吧:题目1: 在淘宝实习,做的是什么? 使用什么技术? PS:后来他总结了下,他认为我其实就是调用第三方API写code。 我想也的确是这样的。所以说,不去核心部门,接触的永远都是表层的东西,很难深入。题目2: 一个按钮,连续点击10次,会产生10个event,这些event在底层是用什么数据结构存放的? 怎么测试10个event在内部是串行执行的,还是并行执行的?题目3: linux下网络编程中,请设计一个read函数,里面可以调用阻塞的read()系统函数,怎么设计这个新的read函数,使得不会出现超时阻塞的情况,需要使用linux下那些机制和系统函数。题 阅读全文
摘要:
对Mysql进行深入的分析对于发现mysql性能瓶颈和寻找优化策略是十分必要的。 我们可以从不同的粒度上对Mysql进行分析:可以整体分析服务器,或者检查单个查询或批查询。通过分析,我们得到的如下信息:1、Mysql访问得最多的数据2、Mysql执行得最多的查询的种类3、Mysql停留时间最长的状态4、Mysql用来执行查询的使用得最频繁的子系统5、Mysql查询过程中访问的数据种类6、Mysql执行了多少种不同类型的活动,比如索引扫描。Mysql提供了两种查询日志,它们可以为我们获取以上信息提供帮助。 这两种查询日志为普通日志(general log)和慢速日志(slow log)。G... 阅读全文
摘要:
什么是MongoDB? 为什么要使用类似mongodb的nosql数据库? MongoDB是一个基于分布式文件存储的数据库开源项目。由C++语言编写,旨在为WEB应用提供可护展的高性能数据存储解决方案。它的特点是可扩展,高性能,易使用,模式自由,存储数据非常方便等。 它与我们平常所使用的那种关系型数据库有很大的不同,MongoDB是基于文档(Documents)存储的,Document相当于关系型数据中的每一行的条目,而MongoDB的每个集合(Collection)相当于关系型数据库中的表。MongoDB中Collection之间没有关系型数据库那种很强的关联,所以MongoDB存储相对独. 阅读全文
摘要:
一致性hash算法(consistent hashing)1 基本场景比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;hash(object)%N一切都运行正常,再考虑如下的两种情况;1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑这种情况),这样所有映射到 cache m 的对象都会失效,怎么办,需要把 cache m 从 cache 中移除,这时候 cache 是 N-1 阅读全文
摘要:
1、Java中的finalizefinalize-方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。垃圾收集器只知道释放那些由new分配的内存,所以不知道如何释放对象的“特殊”内存。为解决这个问题,Java提供了一个名为finalize()的方法,它的工作原理应该是这样 阅读全文
摘要:
Mysql不同存储引擎的表转换方法1、Alter table 直接修改表的存储引擎,但是这样会导致大量的系统开销,Mysql为此要执行一个就表向新表的逐行复制。在此期间,转换操作可能会占用服务器的所有I/O处理能力。转换表之后,原先引擎的特殊性质都会丢失,无法复原。2、转储和导入方法 用提供的mysqldump工具,可以将原有的表转换为一个文本文件,然后修改该文件,将里面的create table语句的引擎选项修改为需要更改后的引擎。3、创建一个新的表,并把旧表中的数据导入新的表 create table innodb_table like myisam_table ; alter ta... 阅读全文
摘要:
•Amoeba db-proxy项目(最早的开源dbproxy切分项目):http://amoeba.sourceforge.net/wordpress•Antlr(处理字符串解析):http://www.antlr.org/ •Antlrwork (字符串解析gui工具):http://www.antlr.org/works/index.html•Nosql 知识清单:http://blog.nosqlfan.com/html/1647.html•Mysqlinternal : http://forge.mysql.com/wiki/MySQL_Internals•Groovy 脚本库: h 阅读全文
摘要:
刚刚又被朋友问到为什么要选择读研的问题了。已经好多好多人问过我这样的问题,我何尝不想问问自己到底为什么要读研呢。前段时间,每天在睡觉之前都我要想出无数个理由劝服自己要坚持读研,而每天早上第一件事又是再问自己为什么要读研。 我觉得,是否要读研的确要分专业的,有些专业读研是必须,而像我们计算机相关专业的,读研未必是件好事。曾经请教过一个我非常尊敬的老师,她给我的答案是,要看自己的人生规划,如果想走核心技术路线,读研是有必要的,如果想走业务技术路线,读研就是浪费时间,毕业后工作两年绝对跟本科生没任何区别,而且一般可以在工作之后考虑读个MBA,从而去从事管理方面的工作。 我当时没有不是很理解,但... 阅读全文
摘要:
下面是一些C++的好书,我按照类型列了出来,并附有介绍。方括号[]内是我自己读后的评论,有的书可以在图书馆借到,我也会标明。#参考手册类型TheC++ProgrammingLanguage(BjarneStroustrup)C++之父的经典著作,包含了几乎一切,从核心语言,到标准库,甚至还有编程的哲学(所以最新版已经有一千多页)。C++StandardLibraryTutorialandReference(NicolaiJosuttis)介绍C++标准库的书。[好书注意,如果你刚刚学会了C++的基础知识,那么这一本书无疑是最适合你了。正如其题目所言,这本书既是一本入门书,也是一本参考手册。从一 阅读全文
摘要:
网站分析采用的指标可能有各种各样的,根据网站的目标和网站的客户的不同,可以有许多不同的指标来衡量。常用的网站分析指标有内容指标和商业指标,内容指标指的是衡量访问者的活动的指标,商业指标是指衡量访问者活动转化为商业利润的指标。一、网站分析的内容指标转换率 Take Rates (Conversions Rates)计算公式:转换率=进行了相应的动作的访问量/总访问量指标意义:衡量网站内容对访问者的吸引程度以及网站的宣传效果指标用法:当你在不同的地方测试新闻订阅、下载链接或注册会员,你可以使用不同的链接的名称、订阅的方式、广告的放置、付费搜索链接、付费广告(PPC)等等,看看那种方式是能够保持转换 阅读全文
摘要:
拟录取为我校面试攻读硕士学位研究生的考生,必须在全国统一报名时间内履行报名手续(10月10日-10月31日,现场确认11月10日-14日),北京地区考生现场确认在北航校内指定地点,外埠考生现场确认在当地指定的报考点。同时还需到母校领取省级高校招生办公室签发(加盖公章)的《全国推荐免试攻读硕士学位研究生(直博)登记表》,并在现场确认网报信息后10天内(最迟于11月24号前),将“在校历年学习成绩表”随同《全国推荐免试攻读硕士学位研究生(直博)登记表》寄送北京航空航天大学研究生招生办公室(办公楼东楼213房间,邮政编码:100191),没有寄送的申请者取消其录取资格。拟录取的推免生请随时关注我校网 阅读全文
摘要:
企业各职位英文缩写: GM(General Manager)总经理 VP(Vice President)副总裁 FVP(First Vice President)第一副总裁 AVP(Assistant Vice President)副总裁助理 CEO(Chief Executive Officer)首席执行官,类似总经理、总裁,是企业的法人代表。 COO(Chief Operations Offi... 阅读全文
摘要:
应届本科生,在快毕业的时候,有个共性就是迷茫。保研?考研?工作?出国? 我想这是每一个应届本科生都曾经思考过的问题。可是,我们是否问过自己我们为什么要这样选择,我们到底追求什么样的生活。我也曾一直追问自己,经历过那么多,我终于找到了我的答案,我想要的生活就是”每天快乐地和一群好朋友做自己想做的事,让这个世界因为有自己的存在而有那么一点点不同“。 前天,我参加了大众点评网的南京地区的”尖子生“交流会,在会上我们分享了很多对未来互联网的展望以及对某些技术的讨论,我发现这正是我的兴趣点所在。我觉得我一听到这些话题,我就很兴奋。当时,我就觉得,感觉对了,这不就是我想要的生活么。和一群志同道合的人一起. 阅读全文
摘要:
题目:以下程序是一个信息编码的程序,阅读其encode部分,并补全其decode部分最后运行程序,会打印出的一句话。这句话就是我们要求的答案。注意!这句话是用GBK编码的!#include <stdio.h> #include <stdlib.h> #include <stdint.h> #include <assert.h> #include <string.h> int encode(const void* raw_in, void* raw_out, uint32_t password, size_t len) { const 阅读全文
摘要:
淘宝实习小结:以下内容,只代表个人观点;本人目前在淘宝实习,来这里差不多快一个半月了,想跟大家分享一下我对淘宝的印象。我觉得大家找工作比较关心的应该就是薪水,福利,工作环境和发展空间。 先说薪水,据我了解,淘宝这边的薪水在国内互联网公司当中属于比较高的水平了,但是薪水的高低主要看个人的能力水平的高低。你能力强,你就可以跟hr开出很高的薪水。 而对与福利,大家最近应该听说阿里集团实行的员工无息贷款30万的事情吧,所以公司对员工的福利还是很不错的,而且在淘宝内部经常会有一些商家的优惠活动比如买车、买房什么的,都只针对淘宝内部员工,有优惠的政策。 再说工作环境。淘宝的工作环境很轻松、很舒适,像很多. 阅读全文
摘要:
找了半个学期的实习单位,最后没去淘宝,没去腾讯,而选择了去爱立信。 一开始 ,我是不打算去爱立信的,因为爱立信主要是做通信的,而我又没有什么通信基础,感觉去了之后可能不会有优势。于是我拒了offer,但是后来爱立信的HR找到我们老师,让老师找我谈话,老师跟我讲了半个小时的爱立信怎么怎么好,过了两天,HR给我打来电话,让我再考虑考虑。但是,那时候,我还是不太想去,于是又拒了,那时候感觉我的rp基本用完了。 后来由于种种原因,我又决定留在南京。但是不太好意思再找爱立信了,于是去面了趋势科技,面了一个小时啊,就纠结着我做过的东西在问,没怎么太问技术问题,而且两个面试官很nice。最后,一个面试官(. 阅读全文
摘要:
函数重载:在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,即函数重载。重载的实现:几个同名的重载函数仍然是不同的函数,它们是如何区分的呢?我们自然想到函数接口的两个要素:参数与返回值。如果同名函数的参数不同(包括类型、顺序不同),那么容易区别出它们是不同的函数。重载与覆盖成员函数被重载的特征:(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。覆盖是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)参数相同;(4)基类函数必须有virtual 关键字。隐藏规则:本来仅仅区 阅读全文
摘要:
1 package cose.seu.edu.cn.cosersoft; 2 import java.sql.*; 3 public class Test { 4 /* 5 * Create a connection to MYSQL database 6 */ 7 public static Connection getConnection() 8 throws ClassNotFoundException, SQLException{ 9 String url="jdbc:mysql://127.0.0.1:3306/myDb";10 Class.forName(&qu 阅读全文
摘要:
本人现在是南京某高校的本科生,学软件工程专业,由于我们大四有去企业实习的计划,所以最近一段时间一直都在忙着找实习单位。今天貌似一切都基本决定了,所以写一些东西,分享一下我最近找实习的一些感受吧。 我一共投了6家公司的简历,分别是微软、腾讯、阿里巴巴B2B、淘宝、爱立信和杭州的华三通讯。 微软(悲剧): 参加了微软在南京大学鼓楼校区的笔试,个人感觉笔试题目不是很难,而且感觉自己也答的挺好,但是为什么没给我面试的机会,哎,悲剧。 阿里巴巴B2B(悲剧): 阿里的整个集团大部分都是搞java的,而我的主要方向是C++和.net,所以自然有一点点不搭,但是得知阿里巴巴也招少量的c++,所以我就抱着试. 阅读全文
摘要:
#include<iostream>using namespace std;//非递归求解所有的子集void fun(int a[] , int n){ int i = 0 , j ; while(i < (1<<n)) //2的n次方 { for(j = 0 ; j < n ; j ++) { if(i&(1<<j)) { cout<<a[j]<<"\t"; } } cout<<endl; i++; }}//递归求解所有的子集void print(int a[],bool flag 阅读全文
摘要:
#include<iostream>#include<assert.h>using namespace std;struct node{ int val; node * next; node(int v) { val=v; next=NULL; }};node * merge(node* list1 , node * list2){ assert(list1!=NULL&&list2!=NULL); node * res; if(list1->val<=list2->val) { res=list1; list1=list1->n 阅读全文
摘要:
Oracle数据库服务器由两大部分组成:实例和数据库文件(物理文件)。实例就是指内存部分,其中包含两个部分:内存组件和进程。我们必须通过实例读取物理文件中存放的数据。同时,实例中还缓存了曾经使用过的数据,从而使得我们在下次再次访问相同的数据时,能够直接读取内存的即可,而不需要再发生物理I/O。 用户与Oracle数据库服务器建立连接: Oracle提供了两种解决方式:专用连接和共享连接。 专用连接... 阅读全文
摘要:
学习桥接模式时,参考了云飞龙行的“研磨设计模式之桥接模式”一文,感觉作者讲得很好,清晰易懂。该文地址:http://www.cnblogs.com/sjms/archive/2010/09/01/1814718.html桥接模式:定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。所谓桥接,通俗点说就是在不同的东西之间搭一个桥,让他们能够连接起来,可以相互通讯和使用。那么在桥接模式中到底是给什么东西来搭桥呢?就是为被分离了的抽象部分和实现部分来搭桥。在桥接模式中的桥接是单向的,也就是只能是抽象部分的对象去使用具体实现部分的对象,而不能反过来,也就是个单向桥。模式结构和说明:说明:Abs 阅读全文
摘要:
定义:通常,客户类(clients of class)通过类的接口访问它提供的服务。有时,现有的类(existing class)可以提供客户类的功能需要,但是它所提供的接口不一定是客户类所期望的。这是由于现有的接口太详细或者缺乏详细或接口的名称与客户类所查找的不同等诸多不同原因导致的。在这种情况下,现有的接口需要转化(convert)为客户类期望的接口,这样保证了对现有类的重用。如果不进行这样的转化,客户类就不能利用现有类所提供的功能。适配器模式(Adapter Pattern)可以完成这样的转化。适配器模式建议定义一个包装类,包装有不兼容接口的对象。这个包装类指的就是适配器(Adapter 阅读全文
摘要:
定义:在《设计模式》一书中,作者这样来叙述单例模式的:确保一个类只有一个实例并提供一个对它的全局访问指针。单例模式适合于一个类只有一个实例的情况,比如窗口管理器,打印缓冲池和文件系统,它们都是原型的例子。典型的情况是,那些对象的类型被遍及一个软件系统的不同对象访问,因此需要一个全局的访问指针,这便是众所周知的单例模式的应用。当然这只有在你确信你不再需要任何多于一个的实例的情况下。单例模式看起来是最简单的设计模式之一,但是使用不当的话,会存在很多的缺陷。经典的单例模式如下:public final class ClassicSingleton { public static ClassicSin 阅读全文
摘要:
本文章转自http://blog.csdn.net/ipqxiang/archive/2007/12/20/1955677.aspx感觉讲解得很详细。一、 抽象工厂(Abstract Factory)模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。如图:图中一共有四个产品族,分布于三个不同的产品等级结构中。只要指明一个产品所处的产品族以及它所属的等级结构,就可以唯一的确定这个产品。引进抽象工厂模式所谓的抽象工厂是指一个工厂等级 阅读全文
摘要:
工厂方法模式定义:工厂方法模式又称为工厂模式,属于类的创建型模式。在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化哪一个类。 在简单工厂模式中,一个工厂类处于对产品类进行实例化的中心位置,它知道每一个产品类的细节,并决定何时哪一个产品类应当被实例化。但是,简单工厂模式的致命弱点也就是处于核心地位的工厂类。而工厂方法模式,则是创建类多个产品的工厂,从而将产品的创建过程变得分散化,避免简单工厂模式中核心工厂负担过重的问题。参与者:工厂方法模式主要涉及4个参与者:抽象工厂类、实现抽象工厂类的具体 阅读全文
摘要:
简单工厂模式: 定义:专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式又被称为静态工厂模式,属于类的创建型模式。其实质是 由一个工厂类根据传入的参量,动态决定应该创建出哪一个产品类的实例,但简单工厂模式并不是23种设计模式。参与者:简单工厂模式主要设计三个参与者(工厂角色,抽象产品角色,具体产品角色)一个实例: 在校园里,无论是老师还是学生,一般都会有一个id号码,用于登录校园内的各种门户系统。所以,经常会遇到用用户的id号码来区别用户身份,并创建用户对象的问题。1、首先建立一个抽象类SchoolUser,用做学生和教师的父类。package Simple. 阅读全文
摘要:
二分查找常用来查找指定有序集合中元素的位置,思路和代码都比较简单,所以大家都很熟练。二分查找貌似很多公司在面试或笔试的时候都会多少涉及到,经常会让你在纸上直接写代码,所以平常只知道原理而从来不自己写的人,可能不会太快写出来,或是代码有点小漏洞,所以经常敲敲常见的数据结构和代码还是很必要的。很多问题,只要涉及到有序的数据结构,就可以往二分查找的思路上靠。 下面的代码,可能不是很完善,仅供参考。经典二分查找的代码,在有序数组里面查找是否存在某个元素,如果存在,则返回相应元素所在索引号:int Find(int arr[], int key,int length){ assert(arr!=... 阅读全文
摘要:
今天去了南大鼓楼校区,参加了微软实习生技术类的笔试。作为小本的我,压力很大,但是也一直抱着做分母的态度去考试的。在教室门口,发现了所有考生的名单,第一页发现4、5个本科生,第二页几乎全是硕士生。总之,本科生比例不足10分之1。所以,压力瞬间有急剧增大了+++++。感觉微软笔试很正规,有考号而且还要携带身份证才能进考场,考试卷子和草稿纸不允许带离考场。后来,就开始考试了。考试分为客观题和主观题。但是题量蛮少的,客观题10个选择,主观题一道题,两个问,主观题就是手写代码的题目。客观题,有些记不清了,但是都是些基础的算法和数据结构,如果有人搞过ACM,一定会认为题目很简单,像对我这样不搞算法好多年的 阅读全文
摘要:
#include<iostream>#include<assert.h>#include<stack>#include<queue>using namespace std;struct Node{ int v; Node *leftChild,*rightChild; Node():leftChild(NULL),rightChild(NULL){} Node(int vv):leftChild(NULL),rightChild(NULL) { v=vv; }};void print(int v){ cout<<v<<&q 阅读全文
摘要:
问题:有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样的链表的尾部形成一环。1、如何判断一个链表是否存在环?2、如果链表存在环,如何找到环的入口点?问题1分析:设置两个指针fast和slow,初始值都指向头指针,slow每次前进一步,fast每次前进两步。如果存在环,则fast必先进入环,而slow后进入环,两个指针必定相遇,当然,fast先到达尾部为NULL,则为无环链表。证明:两个指针fast和slow,fast一次递增两步,slow一次递增一步。如果有环的话两者必然重合,反之亦然。因为fast每次走2步,而slow每次走一步,所以它们之间的差距是 阅读全文
摘要:
编程之美上的题目。问题1:给定一棵二叉树,要求按分层遍历该二叉树,即从上到下按层次访问该二叉树(每一行将单输出一行),每一层要求访问的顺序为从左向右,并将节点依次编号。问题2:写一个函数,打印二叉树中某层次的节点(从左向右),其中根结点为第1层。#include<iostream>#include<queue>using namespace std;struct Tnode{ Tnode * leftChild; Tnode * rightChild; int value; Tnode():leftChild(NULL),rightChild(NULL) { value 阅读全文
摘要:
今天拿到淘宝实习的offer,算是人生中第一个offer。求职生涯才刚刚开始。 阅读全文