免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2248 | 回复: 9
打印 上一主题 下一主题

[其他] 想往服务器开发方面发展,有些困惑,求建议! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-07 23:25 |只看该作者 |倒序浏览
我是个三本大三计算机专业的学生.不想考研,结合自己已经学的东西,自己想往服务器开发方面发展.
具体的方向想搞:分布式,云计算和集群.当然这只是我自己想了,具体可能还要看运气吧.
暑假准备好好准备校招,针对自己薄弱的地方进行加强,还请各位已经在职场的大神们指点指点~

介绍一下我的技能:
语言:汇编,C/C++,java,python.C最熟,函数指针,内存对齐,setjmp和longjmp,位段都算比较清楚的.C++也就是c+stl的程度..java写过一个局域网聊天程序,UI+客户端+后台.用python写过些脚本避免体力劳动,但学得很不全.学python也是看招聘网站很多服务器端要的python,所以就学了...汇编由于学校课程重新排了,所以学的比较杂....自学+学校教ARM,结果学了8086,AT&T,nasm和ARM的汇编....虽然都差不多,但也浪费不少时间.
自学过Linux编程,包括网络和多线程.但代码写的少,主要是看书和总结为主.
自学过单片机.也写了不少程序.也通过单片机了解了很多底层的运行过程.
自己大学还是以理论为主的,并且主要是学底层理论.所以代码总量不多,也就3W行的样子.
理论方面额外看了些底层代码优化和计算机的运行原理的书.算是对计算机整体运行有比较透彻的理解吧.应该对性能要求高的地方有些用.
操作系统也看了不少本书,包括<现代操作系统>,不少细节可以做到知道其底层硬件实现方式.
自己对操作系统比较感兴趣,所以自己写了个不完整的玩具操作系统,过几天准备重写(为写这个准备了好久,经验不能浪费了).
数据结构自己除开课堂和课设外还写过平衡树,堆排,优先队列之类的高级数据结构.还在OJ上刷了150+道题,跟ACMer比起来自然很水...但也练了很多东西就是了...
数据库会sql server和oracle.当然都很水就是了.跟着学校上课学的,学得不深.
网络方面对TCP/IP理论还是比较清楚的,包括路由转发等原理.就是代码写的不多,编程细节掌握比较差.
自认为基础还行~

暑假安排:
我看很多服务器开发要求python,所以我准备把python基础教程全部敲一遍,然后用python自己搭建个网站,从前端到后端.我准备花上整整一个月的.
还有就是刷leetcode,刷<程序员面试金典>和<剑指offer>.还准备看一下nginx的书的.

估计做完这些时间会有些不够..所以准备在算法和项目中进行取舍.但我很困惑到底我做到的程度够不够...

困惑:
1.针对服务器开发,我的哪方面还需要强化?暑假应当把重点放在哪?刷题,项目,还是nginx?
2.暑假是否需要学一学mysql?
3.网络方面有没必要看<TCP/IP详解>第一本?还是只用把理论搞清楚就行?


希望各位大神能提供一些建议以供参考~谢谢了~

论坛徽章:
0
2 [报告]
发表于 2014-06-08 09:44 |只看该作者
新一代全能大牛即将诞生

论坛徽章:
0
3 [报告]
发表于 2014-06-08 19:48 来自手机 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
双子座
日期:2013-11-14 17:43:24
4 [报告]
发表于 2014-06-10 11:43 |只看该作者
纯粹从我个人的经历角度来看:
1) 我个人觉得你的基础很好(其实,貌似多年工作的人都未必可以写个OS),基础算法都已经掌握的不错了。我觉得,你把重点放在你那个“操作系统”的项目中,不断的精炼,你会学到更多的东西:因为在开发OS的过程中,你需要研究更多高级的算法;这个比纯粹学习算法要有效果,需要考虑程序结构......。貌似达芬奇画个鸡蛋,都能成为一代大师的
2)多看看数学类的书籍:绝对有助于你能力的提高。我个人觉得可以从线性代数入手。
3)其余的书籍(python类的,程序员面试金典,剑指offer)都别看了。

忌:贪多!!! 不要随随便便想着往广度方向发展,找到一个点之后,不断地深入深入(乔峰用一套太祖长拳,就可以把少林神僧打的灰头土脸)。其实计算机很多概念都是相同的,当你对一个方面非常精通后,你在学其余的话,你会学的又快又好。

至于你想往服务器方面发展,你无须这么着急。先完善你的“操作系统”,如果可能的话,为自己的操作系统写一个TCP/IP网络栈。

杂七杂八说了这么些,希望对你有帮助。

论坛徽章:
0
5 [报告]
发表于 2014-06-11 17:20 |只看该作者
回复 4# star_in_sky


    谢谢你的建议...感觉可以当作一个长线发展的指导,但现阶段还是以找工作为主吧..但我感觉集群,云和分布式很和数学难关联上吧,可能分布式要点数学的知识...自己原来也以为数学很重要,但是发现高数很多在应用中很难用上...即便用上很多其实也有相关的算法了..比如自动化领域的PID算法..即便没有现成的算法,找paper读一读应该就可以了,到时候再补即可...
我个人现阶段主要还是想争取进个好公司...看网上大公司的面试题很少考高数.....自己本身学历比较差...想先进个好公司先镀个金...由于自己一直学的比较底层..能去的好公司也少...感觉不太好找工作..之前3月份也找了实习的..有项目经验还是很能加些分的..面试的时候有个面试的直接就说我做的东西太乱了,不如把java学扎实....甚至直接说多久能开始写代码...所以我还是比较担心自己能不能找个好公司的....这也是我学python的原因,想快点上手,至少可以不用让公司承担过多的培养时间吧,增加点面试成功率.
我有好久没写算法了...感觉还是要看看那些书找找感觉的,而且以前学算法学的确实很水.....

主要还是比较困惑服务器开发的要求...对于TCP/IP和数据库至于要到什么程度,网上的一些招聘要求都写的很笼统...搞的我很迷茫...

还是谢了..

论坛徽章:
1
双子座
日期:2013-11-14 17:43:24
6 [报告]
发表于 2014-06-12 14:17 |只看该作者
回复 5# meiboyu


    如果你不想只当码农,数学真的很重要;如果你需要解决一个现实问题,良好的数学功底,可以让你的眼界远远高于其他人。至于你说的那几个方向(分布式,集群),每个领域都有很扎实的数学基础才能有真正的做深。
     看看下面的链接: http://www.matrix67.com/blog/
     人家也是写程序的;但是我可以这么说, 我们能解决的问题,他能够解决;反过来,就不一定了。你感觉数学没有用处, 是因为你遇到的问题还是太少。等你工作几年之后,你就有体会了,但是希望那个时候不会太迟。
     如果只是用用现有的东西,那么数学不重要。

    说点实际的:
    1)关于找工作:在简历中你确实需要突出你的优点(比如说:你熟练使用C语言);让面试的人知道你有什么特长。至于其他的,你需要提到;但一定要有重点(投“面试官”所好)。
    2)关于服务器开发:我确实不太清楚你指的是哪个方面?指网站类开发?还是说使用socket编写网络程序(Web服务器等)。
        如果是前者:那么你需要熟悉 Java语言和开发网站的基本技术。
        如果是后者:那么你需要熟悉 OS层面,特别是有关I/O方面的基本模型:select, I/O完成端口,epoll模型,异步读写,多线程/多进程。
                        会阅读RFC协议。
        (其实无论前者/后者,熟悉TCP/IP协议都是需要的)
    3)数据库方面:基本的SQL技能是必不可少的。

评分

参与人数 1可用积分 +5 收起 理由
cryboy2001 + 5 赞一个!

查看全部评分

论坛徽章:
62
洛杉矶湖人
日期:2015-02-10 09:56:11黑曼巴
日期:2016-06-28 17:41:282015-2016NBA季后赛纪念章
日期:2016-06-28 17:41:282016猴年福章徽章
日期:2016-02-18 15:30:34圣安东尼奥马刺
日期:2015-05-04 22:46:00菠菜神灯
日期:2015-05-04 22:35:07新奥尔良黄蜂
日期:2015-03-17 13:54:52明尼苏达森林狼
日期:2015-03-16 21:51:15萨克拉门托国王
日期:2015-03-02 16:10:58华盛顿奇才
日期:2015-03-02 16:10:58迈阿密热火
日期:2015-03-02 16:10:582016科比退役纪念章
日期:2016-06-28 17:41:28
7 [报告]
发表于 2014-06-12 14:32 |只看该作者
赞一个。。。

论坛徽章:
0
8 [报告]
发表于 2014-06-12 22:02 |只看该作者
回复 6# star_in_sky


    嗯,谢谢再次回复.数学的话现阶段肯定是不考虑的,以后再仔细考察一下对于我这些方向是否真的有那么重要...第一点我在其他地方也看到很多次了.....我认为有些公司就是准备压榨实习生工资的,招聘上写着是要求C经验,但是去了还是要求你搞java,然后各种打击你........关于第二点.具体的我还没实习,不太清楚网站开发和web服务器的差别...可否详细说明一下?

我看服务器开发招python也比较多,相对于java而言,python开发比较快,还可以调用C/C++的库,感觉我学过的东西不会浪费...学java的话,又得重新开始学jvm一套相关的东西....虽说java库中也是用的C/C++写的,但对于面试的话,还是先学python比较好吧.

网络方面主要想问面试需要学习哪些内容..服务器开发能搜到的面试题目比较少,而且都是基本理论比较多...这一块哪些具体的方面需要扎实一下.比如哪些协议过程要详细了解,需要了解哪些比较重的协议的功能,底层的一些容错机制,丢包处理之类的...感觉在学校学的东西,除了知道一些常识以外,其余用的很多的协议了解的都比较少,基本直接带过.....搞得我不知道从何下手....希望从工作中用到的内容谈一谈~


数据库的话对于开发应该会用select就够了吧?是否需要了解详细的处理过程?感觉很多是DBA做的事情...不知道为什么很多服务器开发招聘上面还写着说熟悉mysql之类的..还是希望给些具体一些...

我个人是希望去游戏公司的,但是游戏服务器开发比较少,web服务器开发比较多..所以暂时按照web的来准备...两种开发转换应该不难吧?

论坛徽章:
1
双子座
日期:2013-11-14 17:43:24
9 [报告]
发表于 2014-06-13 11:17 |只看该作者
网站开发更加注重业务流程,所以掌握数据库知识是必不可少的;而且你是绕不开Java的。

说说数据库方面的事情:
1)一般公司中的开发,也许会有DBA;但是很多时候这个角色是程序员来兼任的。而且,如果公司交给你一个模块开发,你需要做些测试,你总不能老是让DBA帮你管理数据库的。实际的场景是:你需要独立处理。
2)如果你仅仅认为会select就够了。我可以这么说,你在开发工作中会被老板,经理骂的。
3)在实际的开发工作中,数据库是必不可少的技能之一;而且绝对可以为你找工作加分的。
4)熟练使用数据库,可以很好的帮助你的职业生涯。现实世界中,基于数据库的应用是非常多的。

至于我说的WEB服务器开发,我仅仅是举个例子。这类开发主要是基于socket的网络编程,但是大部分涉及到的是基于应用协议的开发,一般不会涉及到TCP/IP这么底层的东西。

一些个人经验,自己斟酌:
面试题目这种东西,基本无用。一般公司(无良的除外)招应届生,考虑下面几点:
1)个人基础。
2)性格(需要能交流沟通,承担责任)
3)学习能力,适应环境的能力。
还有,找到好的公司需要一点运气。

如果你有时间,多写代码。

论坛徽章:
0
10 [报告]
发表于 2014-06-13 12:30 |只看该作者
回复 9# star_in_sky


    嗯.谢谢你的建议.我再重新想想我的安排吧.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP