To be a Amazoner - 需要潜修的技能(mark以自勉)

1. Software Development Engineer (SDE)   
  
Working Location: Beijing, China 
Payment : >200k/y 
  
Do you enjoy solving very complex problems with simplest solutions? Are you excited about building large scale distributed systems? Do you enjoy leveraging technology to solve real world problems? Would you like to help us scale with the cloud and leverage latest mobile technologies? We are looking to hire in our Beijing office to work on further improving the space of OPS IT. Our systems cover a wide range of business and technology areas.  
  
Basic Qualifications:  
--Motivated self-starter who is excited about overcoming hurdles to get things moving in the right direction. 
--5+ years of relevant experience, rich hands-on programming experience in Java, Ruby, C++ and other object-oriented languages and have a deep understanding of object-oriented design
--Familiarity with Oracle, MySQL , Web Service and SOA 
--Familiarity with design concepts such as design patterns and UML are also highly desirable. 
--Practical experience with software engineering best-practices is a big advantage. Deep understanding of distributed systems and scalability is highly desirable. 
--Strong communication skills. Able to communicate in both verbal and written forms in English.  
--Strong ownership. 
--The ideal candidate will have implemented at least one large scale enterprise system with experience with databases, Linux, and various messaging technologies. 
--Experience translating business requirements into operational systems 
--Willingness to work in an agile team development environment, have basic knowledge of agile design process , experience developing software in an agile environment is highly preferred 
--A bachelor's degree in computer science, engineering or related field is required. 
--Commitment to operational excellence: building low-defect systems that are user-friendly with low operational burden; 
  
  Please send your CV to ls4@amazon.com, named by:  
  Software Development Engineer(北京-朝阳区)- name 
  
---------------------------------------------------------------------------------------------- 
  
2.  Software Development Manager (SDM) 
  
Working Location: Beijing, China 
Payment: >200k/y 
  
Do you enjoy solving complex problems via the means of data analysis, math, statistics and automation? Do you want to own a business critical system that enables Amazon to realize its vision of  being the most customer centric company? Do leveraging information retrieval, high performance computing and machine learning excite you? Amazon OPS-Tech is looking for people like you. 
  
You will lead a team of talented engineers to build innovative solution that helps Amazon to meet the challenges of fast business growth. You will own critical system modules that have direct impact to Amazon’s fast growing business. You will have the opportunity to strategize and lay out the roadmap for the system that affects the life of millions of Amazon customers worldwide.  
  
Basic Qualifications  
--Excellent communication ability is a must. English fluency is strongly desired. 
--Strong leader capable of motivating and energizing the very best software engineers, as well as gaining their respect. Ability to manage a team of 6-10 software engineers, including task planning and code reviews. 
--Demonstrated expertise in problem solving and technical innovation capability 
--Proven ability to share knowledge with more junior team members via a formal mentoring relationship, reviewing code, reviewing design docs, giving technical talks, teaching classes, or as a consultant on projects. 
--5-10 years’ relevant experience, rich hands-on programming experience in Java, Ruby, C++ and other object-oriented languages and have a deep understanding of object-oriented design. 
--Familiarity with Oracle, MySQL, Web Service and SOA 
Major in Computer Science, Engineering or related area. Prefer Master’s degree or above. 
  
Preferred Qualifications 
--Experience managing teams that design and support large-scale distributed systems  
--Experience working on production system with operational support 
--Experience in project management, team management and hiring 
--Proven experience establishing metrics for measurement of engineering and operational excellence 
--Proven experience in innovative business practices that have been game changing for business evolution 
  
Please send your CV to ls4@amazon.com, named by:  
Software Development Engineer(北京-朝阳区)- name 
---------------------------------------------------------------------------------------------- 
  
-- 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,需要分多个步骤来实现。我会尽力解答,但是由于长度限制,可能无法提供完整的代码实现,还请谅解。 首先,需要了解哈夫曼编码的基本原理。哈夫曼编码是一种变长编码方式,将出现频率较高的字符用较短的编码表示,出现频率较低的字符用较长的编码表示,以达到压缩数据的目的。在哈夫曼编码中,使用哈夫曼树来表示每个字符的编码。 接下来,我们可以按照以下步骤来实现哈夫曼编译器: 1. 定义一个结构体来表示每个字符及其出现的概率: ``` typedef struct { char ch; // 字符 float prob; // 出现概率 char code[256]; // 哈夫曼编码 } HuffmanNode; ``` 2. 编写一个函数来统计输入字符串中每个字符出现的概率,并将结果存储在一个数组中: ``` void calc_prob(char *str, HuffmanNode *nodes, int *count) { int len = strlen(str); for (int i = 0; i < len; i++) { char ch = str[i]; count[ch]++; } for (int i = 0; i < 256; i++) { if (count[i] > 0) { nodes[*num_nodes].ch = i; nodes[*num_nodes].prob = (float)count[i] / len; (*num_nodes)++; } } } ``` 3. 构建哈夫曼树,按照字符出现概率从小到大排序,并将概率较小的字符作为叶子节点,概率较大的字符作为根节点: ``` void build_tree(HuffmanNode *nodes, int num_nodes) { for (int i = 0; i < num_nodes - 1; i++) { int min1 = -1, min2 = -1; for (int j = 0; j < num_nodes; j++) { if (nodes[j].parent == -1) { if (min1 == -1 || nodes[j].prob < nodes[min1].prob) { min2 = min1; min1 = j; } else if (min2 == -1 || nodes[j].prob < nodes[min2].prob) { min2 = j; } } } nodes[min1].parent = num_nodes + i; nodes[min2].parent = num_nodes + i; nodes[num_nodes + i].left = min1; nodes[num_nodes + i].right = min2; nodes[num_nodes + i].prob = nodes[min1].prob + nodes[min2].prob; } } ``` 4. 根据哈夫曼树生成每个字符的哈夫曼编码: ``` void generate_code(HuffmanNode *nodes, int root, char *buffer, int depth) { if (nodes[root].left == -1 && nodes[root].right == -1) { buffer[depth] = '\0'; strcpy(nodes[root].code, buffer); return; } buffer[depth] = '0'; generate_code(nodes, nodes[root].left, buffer, depth + 1); buffer[depth] = '1'; generate_code(nodes, nodes[root].right, buffer, depth + 1); } ``` 5. 输入任意字符串,将每个字符编码,并输出译码结果: ``` void encode_string(char *str, HuffmanNode *nodes, int num_nodes) { int len = strlen(str); for (int i = 0; i < len; i++) { char ch = str[i]; for (int j = 0; j < num_nodes; j++) { if (nodes[j].ch == ch) { printf("%s", nodes[j].code); break; } } } printf("\n"); } ``` 以上是一个基本的哈夫曼编译器的实现步骤,具体实现细节还需要根据实际情况进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值