小弟一直潜水,下午腾讯笔试,中午有点迷惑彷徨,想跟各位老司机交流交流语言学习和职业道路之法
学习了 Linux 和 C++也不短了,基本上大二末就一直在学习,今年适逢秋招,也算是经历了不少战斗了,想说说自己的想法....
首先内推基本上都挂了(双非本科,实习经历也很平庸,就是在某家小公司用 PHP 增删改查之类的),然后往前靠一点的秋招笔试也都觉得还 OK,除了头条和阿里的基本上编程题也都能 ac 个 1.5-2 甚至全 a,毕竟暑假也是花了不少精力刷 leetcode 和一些过往的题.也面了几家大厂,虽然是电面,个人感觉都答的比较到位,可能就是有时候语无伦次,但是我觉得起码意思都表达的到位了,70 %左右回答正确率吧,然后纷纷止步一面..可能是简历比较平庸
技能方面的话,大二开始看了 7,8 成的 CSAPP,也跟着后面的大作业写过个使用边界标记的用户空间的虚拟内存分配器,一个静态 html 的 webserver,之后也陆陆续续看了 unp(前 14 章,主要是觉得它跟 apue 的后面章节有点算工具书),陈硕老师的 Linux 多线程服务端编程,以及现在正在看的 c++ concurrency in action,感觉对线程模型,消息传递,reactor 也掌握不少,期间做过一个校级项目,服务端就是用 libevent+应用层心跳包的 tcp 去编写的,到今年年初,算是学习陈硕的网络库,自己也动手写了一个 c++11 版的,多了写额外的东西,不过大体架构都是以效仿,期间还看了 glibc 的 ptmalloc 的源码,和 Linux 对物理内存分配器的一些源码..
怎么讲呢,比如面试里要是让我谈谈 Linux 的文件系统吧,我也是能够介绍介绍 inode cache,dentry cache,VFS,buffer cache/page cache 之类的,但是由于对汇编不太感兴趣,对 Linux 也没有系统性的学习,比如保护模式什么的,基本上都不太清楚,所以干底层的话现在肯定是稍显稚嫩.
C++方面的话,我觉得虽然是新手期,没啥编程风格,但是比如写一个类,我都会考虑好能不能被拷贝,是浅的还是深的,值语义还是对象语义,需不需要 RAII 去控制,熟悉大部分常用的 stl 容器算法等等,虽然暂时写不出 stl/boost 这种模板黑科技满地的大神级代码,但是我觉得我编程应该还算规范吧..Linux 上的调试工具会的不多,gdb/二分 print 大法,网络编程时可能会用到 tcpdump,有时会用 pstack 看看有没有死锁啥的,因为写的其实玩具代码偏多,高大上的调试工具没有使用过...
说到底,我其实就想问问,应届生要到啥程度算是可以找一份 C++工作,或者说需要什么样的深度或广度才能驾驭的了日常开发 /维护的任务,其实我也知道没必要拘泥于某个编程语言,比如我在小公司实习时曾提出用 PHP 扩展编译 so 加入 php.ini 来解析接口,不过 leader 还是选择 json 格式和 json_en/decode 去解析,可能是 C++确实有种魔力吧,哈哈
求老司机指点...
学习了 Linux 和 C++也不短了,基本上大二末就一直在学习,今年适逢秋招,也算是经历了不少战斗了,想说说自己的想法....
首先内推基本上都挂了(双非本科,实习经历也很平庸,就是在某家小公司用 PHP 增删改查之类的),然后往前靠一点的秋招笔试也都觉得还 OK,除了头条和阿里的基本上编程题也都能 ac 个 1.5-2 甚至全 a,毕竟暑假也是花了不少精力刷 leetcode 和一些过往的题.也面了几家大厂,虽然是电面,个人感觉都答的比较到位,可能就是有时候语无伦次,但是我觉得起码意思都表达的到位了,70 %左右回答正确率吧,然后纷纷止步一面..可能是简历比较平庸
技能方面的话,大二开始看了 7,8 成的 CSAPP,也跟着后面的大作业写过个使用边界标记的用户空间的虚拟内存分配器,一个静态 html 的 webserver,之后也陆陆续续看了 unp(前 14 章,主要是觉得它跟 apue 的后面章节有点算工具书),陈硕老师的 Linux 多线程服务端编程,以及现在正在看的 c++ concurrency in action,感觉对线程模型,消息传递,reactor 也掌握不少,期间做过一个校级项目,服务端就是用 libevent+应用层心跳包的 tcp 去编写的,到今年年初,算是学习陈硕的网络库,自己也动手写了一个 c++11 版的,多了写额外的东西,不过大体架构都是以效仿,期间还看了 glibc 的 ptmalloc 的源码,和 Linux 对物理内存分配器的一些源码..
怎么讲呢,比如面试里要是让我谈谈 Linux 的文件系统吧,我也是能够介绍介绍 inode cache,dentry cache,VFS,buffer cache/page cache 之类的,但是由于对汇编不太感兴趣,对 Linux 也没有系统性的学习,比如保护模式什么的,基本上都不太清楚,所以干底层的话现在肯定是稍显稚嫩.
C++方面的话,我觉得虽然是新手期,没啥编程风格,但是比如写一个类,我都会考虑好能不能被拷贝,是浅的还是深的,值语义还是对象语义,需不需要 RAII 去控制,熟悉大部分常用的 stl 容器算法等等,虽然暂时写不出 stl/boost 这种模板黑科技满地的大神级代码,但是我觉得我编程应该还算规范吧..Linux 上的调试工具会的不多,gdb/二分 print 大法,网络编程时可能会用到 tcpdump,有时会用 pstack 看看有没有死锁啥的,因为写的其实玩具代码偏多,高大上的调试工具没有使用过...
说到底,我其实就想问问,应届生要到啥程度算是可以找一份 C++工作,或者说需要什么样的深度或广度才能驾驭的了日常开发 /维护的任务,其实我也知道没必要拘泥于某个编程语言,比如我在小公司实习时曾提出用 PHP 扩展编译 so 加入 php.ini 来解析接口,不过 leader 还是选择 json 格式和 json_en/decode 去解析,可能是 C++确实有种魔力吧,哈哈
求老司机指点...