绪论 | 软著 | 专利 | 小论文 | 大论文 | 奖学金 | 竞赛 | 求职经验 | Java后端入门 | 后记 |
---|---|---|---|---|---|---|---|---|---|
💊 | 🍰 | 🍎 | 📝 | 🎓 | 💰 | 🐎 | 🙏 | ☕ | 📋 |
希望前人走过的弯路,后人就不必再走
- Figure out the basic conditions for graduation
- Try to publish an ESI and show your attitude(be a licking dog)
- Take time to write your graduation thesis and carefully draw each picture
- 源代码
要求:代码量按前、后各连续30页,共60页(不足60页全部提交),第60页为模块结束页,每页不少于50行,行数包含注释,不包含空行。 - 使用说明书
要求:不少于15页好像 - 我准备的材料在申请时顺利通过,可参考我留在实验室的资料包
- 导师职工号
- 导师审核
- 自行邮寄
申请流程(学校的说明文件)
- 访问**版权保护中心,完成注册登录
- 选择我要登记->计算机软件著作权登记申请->填写表格->打印表格
- 进入学校知识产权管理系统,网址可能会有变更,入口为智慧理工大->专利软著管理系统
- 点击软著申请->填写表格->上传申请表和软著材料
- 请导师审核
- 等待后续审核
- 审核完成后从系统上下载一个用印表并打印去西院飞马广场那里盖章,盖章的时候再领个学校法人什么的纸
- 将申请表、源代码、说明书、学校法人那啥、自己身份证复印件,一同寄给**版权保护中心
- 等待受理
- 我是3.6在校系统申请,完成邮寄后,3.26受理登记(受理即达到毕业要求了,这中间是很快的,所以不要慌)
- 如果你有代码的话,书写这玩意儿半天-2天(没有的话听说团购价800包全套)
- 受理到发证要一个多月,采用挂号信邮寄,比较慢
- 权利要求书
- 说明书
如何书写:学校提供的撰写指南,也可以参考我的,可以从我留在实验室的资料包中找到。
- 导师职工号
- 导师审核
- 第一发明人身份证号
- 交钱
申请流程(学校的说明文件)
- 进入学校知识产权管理系统,网址可能会有变更,入口为智慧理工大->专利软著管理系统
- 点击专利申请->填写表格->上传材料
- 请导师审核
- 等待后续审核
- 等专利代理人联系你
- 然后听代理人的
- 校系统提交到代理预计2周,其中1周可能花在那谁身上,也可能是n周,我就花了一个多月
- 配合代理书写专利2天
- 代理提交后到受理2天(受理就可以了)(总体来说挺快的,关键时候可以保命,也可以用来前期混分)
- 受理到授权3年(咱们这只让提交发明专利)
如果找不到方向,那就从别人的Future Work出发
- 《SCI论文写作和发表:You Can Do It》(这本书我会留在实验室)
- 邱锡鹏老师-如何端到端地写科研论文?
- 如何写一篇合格的NLP论文
- 科研新手写论文常犯的15个错误
- 244页机器翻译学术论文写作方法和技巧
- 阅读和研究文献
- 从你最熟悉的部分开始, 比如先写结果或者方法部分
- 根据结果论述你是如何得到这个结果的
- 写前言部分,即
- 你研究的领域的研究现状,别人做到哪一步了(第一段 review)
- 你为什么要做这项研究(第二段 why)
- 你怎么做的(第三段 how)
- 你得到了什么结果(第三段 what)
- 文章结构(第四段)
- 写结论和摘要
- 写题目
- 反复修改
- 选择期刊,阅读Guide for Authors
- 写cover letter
- 投稿
写作过程中不免要阅读大量的文献,尤其是英文的。对于阅读过的文章,有些选手选择在浏览器里添加书签,有些会下载下来在本地建文件夹分门别类的保存。这样的做法固然可取,但是当你在写作过程中需要去引用这些文章,并按杂志的要求调整参考文献格式的时候就觉得痛苦了,下面分享的这个组合能为你节省大量的时间。
-
Google Chrome
别用IE了,也 ball ball you 别用什么360了,Microsoft Edge 都转chromium 了
为什么非要用Chrome?
最大的原因当然在于
如果大大您不需要翻译,那么请看下面 -
Google Scholar
就算你没用过,你也应该,从知乎从小木虫听到过。
为什么要用Google Scholar?
我也不知道为什么,看一个检索的例子吧,搜索速度挺快
-
其他常用的论文数据库
-
Kopernio插件
在Chrome里安装这个插件之后就可以在论文检索结果页面上一键将该论文添加到自己的Kopernio Locker里面了,当然你具有哪些论文全文的授权就看你的学校了,Kopernio会自动帮你查询能否获取该论文的PDF全文,在Google Scholar页面就会多上这么一个小按钮
点击这个按钮就可以添加该文章到自己的Kopernio Locker
点击Export Reference便可同时下载PDF和RIS格式的文件用于EndNote、Zotero等软件 -
EndNote
一个参考文献管理工具,可以和Word完美配合进行参考文献的引用,可以输出各种各样的引用格式,效果如图
这软件吧,收费的,但是有批量授权版的,懂的懂
流程图、框图:Visio(我校提供正版下载)
柱状图、折线图:Origin(强大一点) or Sigmaplot(好看一点)
- 教程
地址
提取码:c1f9 - Visio如何导出eps格式矢量图
先另存为为PDF格式,然后用Adobe Acrobat Pro打开PDF文件,裁剪到无边框之后另存为内嵌eps格式。
How to Write Cover Letter
Springer Cover Letters 要求
模板
Cover Letter 的一般内容如下:
- 第一段:包含文章标题,要投稿的期刊
- 第二段:精简的描述做了什么工作,得到什么结果,意义在哪里
- 第三段:你的文章为什么符合期刊的发表要求,读者凭什么为你的文章买单
- 最后一段:套话,文章没发表过,作者都同意等等
- 当你开始着手写毕业论文,并列出了论文提纲之后,你已经成功了50%;
- 当你完成了大论文的初稿,你已经成功了90%;
- 你会觉得你的初稿很牛逼,改到后面你会发现那就是垃圾;
- 你会发现剩下的10%才是最难的,这10%可能会让你重新调整文章的结构,可能会让你重写一般的文章内容,可能会让你重绘所有的插图;
- 不管你的研究有没有价值,有没有进展,一定要去写大论文,写了就基本能毕业。
- 年前完成初稿是广为流传的一个做法,也是比较合理的时间安排,这能保证你过个愉快的年,也能确保来年有充足的时间去修改论文。
- 但对于我们而言,在年前老师应该不会去要求你写大论文,压在你头上的应该是篇小论文。那么着手写大论文最好的时机就应该是小论文刚投递出去的真空期,利用这段审稿时间来完成大论文的初稿。
- 第一章是绪论,主要的内容是国内外研究现状,就是要说明你研究的这个领域现在是个什么发展状况,国内外的谁谁谁做了什么研究。为了能快速完成这部分的内容,在平时阅读文献的时候,除了重点看研究方法外,也可以顺手摘录下Introduction部分和Related Work部分。
- 你可以从第二章开始论述你的研究工作,也可以在第二章阐述你对前人的工作做了哪些研究。你过你是做算法的,这一章可以列举前人的各种各样的算法,然后在后面的章节里将你的算法跟这章列举的作比较;如果你的题目是基于什么什么的,那么这一章可以用来说明你基于的那个东西;如果你是做系统的,建议这一章写需求分析和关键技术研究。这一章灵活多变吧,你的工作内容多,那么这一章开门见山,如果不够,这一章可以凑字数。
- 从第三章开始就必须是你的工作内容了,可以延续到第四章,或者第五章。比如第三章写你提出的算法或者对算法的改进,第四章写你的算法实现和对比结果,或者第四章是你用该算法实现的系统;再比如第三章写系统设计,第四章写系统实现,第五章写系统测试,或者单章内容太少的话可以将两章合并成一章,例如系统设计与实现、系统测试,或者系统设计、系统实现与测试。
- 最后一章就是结论,需要对全文做个总结,直接的给出自己的研究成果和创新点,再写个未来工作展望。
- 合理管理你阅读过的文献
- 合理保存你的实验结果图
- 算法类:做与其他算法的对比实验并保留结果
- 系统类:记录系统架构、各个环节实现流程
- 将可运行的代码保管起来,用做答辩演示
- 图->对比->我的成果优越->毕业
学业奖学金如何获得分数加成:
- 考试成绩(占比很大)
- 发论文(EI会议这种水准就可以)
- 发不了论文发专利
- 参加学术竞赛(院、校、省、国)(参赛即可混分)
- 校内任职(班级水平就可以)
- 文艺活动(参赛即可混分)
- 体育活动(参赛即可混分)
- 通报表扬
- 导师加分(咱们一般5分拉满)
- 八次讲座必须拉满
国家奖学金如何获得分数加成:
- 考试成绩(占比很大)
- SCI论文、EI论文、EI会议论文(会议很水的)(大头)
- 发明专利授权、受理(授权慢、受理贼容易)(大头)
- 省级、国家级学术竞赛三等奖起步(大头)
- 校内任职(毛毛雨)
- 通报表扬(毛毛雨)
-
对于我们专业的孩子来说,一般可以经历4次校招,分别是:
- 实习(3月份开始)
- 内推/提前批/管培生(6月份开始)
- 秋招(9月份开始)
- 春招(次年3月份开始)
-
不是要大家每个都参加,拿到心怡的offer就可以收手了,重点是注意下时间节点,越往后面的意味着你可能准备的更充分,但同时坑就那么多,越往后面坑越少。需要根据自己的能力和准备的充分程度来选择合适的入场时机,或者说根据自己计划的入场时间提前做准备。
-
同一家公司,参加前面的招聘,理论上或者说官方说明上是不影响下一次招聘的,但这应该不是事实上。事实上每次参加招聘都会在目标公司的招聘系统上留下“案底”,在下一次投递岗位的时候,“案底”会作为评估你的一个依据,好的“案底”就是加分项,太差的“案底”会让对方直接不考虑你了,毕竟招聘也是要花费时间和金钱的,对方也不想浪费时间。几次招聘在难度上没有太大的差异的,尽早参加可以让你提前经历笔试面试,知道面试官会问哪方面的问题,可以拿一些并不是很想去的公司提前练练手。
-
如果你不是大神,提前做准备是非常必要的(事实上大神也会做准备)。笔面试其实和备考差异不大,往年的笔试题、面试经验都是等效于划重点的宝贵材料。我曾经面试的一家公司,面试官拿着一个小册子问我,他说这是公司要求,公司列出了必考察的几个点,然后每个点列出了一些常见的问题供面试官参考,如果能提前熟悉这个小册子不就可以如鱼得水了。
-
当然不是每家公司都有这种小册子,面试前你也无法确定你的面试官,没有固定招数的面试官一般就会问自己熟悉的,不然他也无法确定你回答的正确度。举个例子,对于软件工程师这个岗位,一般投简历的时候Java工程师和C++工程师是两个岗位,细心点的公司面试的时候会让搞Java开发的去面试投递Java岗位的,搞C++的去去面试投递C++岗位的,但并不是所有公司都这样。我校招的时候除了几个算法岗,投的全是Java开发,我遇到的面试官有:
- 搞C++的,然后问我数据结构
- 搞Java的,问Java基础、集合源码、并发、JVM、算法
- 搞网络的,问TCP、HTTP、DNS
- 不会Java的,问数据库
-
总结一下,如果他不会你这门语言,而你投递的又是这个岗位,那他不会在语言与算法上难为你,这一环节就跳过了(算法一般是要你写的,你写了他不一定看得懂,所以就跟着跳过了),那么剩下的就问基础知识和项目经历了,知识面广一点的就问你:
- 数据结构
- 操作系统
- 数据库
- 计算机网络
知识面窄一点的就只问他会的。
-
如何关注每个公司招聘开始的时间节点:
- 可以参考牛客网校招日程
- 关注你心怡公司的招聘公众号,拿到一手官方消息
- 关注校园宣讲会
- 目标公司的熟人内推
笔试一般就是选择题+编程题,不同的公司会有不同的比重,有些公司只有编程题,而国企可能选择题多一点。
选择题的内容主要涉及:
- 一门编程语言
- 数据结构与算法
- 设计模式
- 操作系统
- 计算机网络
- 数据库
编程题就是要你用代码去求解某个问题
笔试题的练习可以在赛码网或者牛客网
编程题的练习可以在leetcode或者leetcode**,也可以在赛码网或者牛客网上练习各公司的往年编程题。
建议在练习的时候,每周将做过的题整理一遍,写上注释,放在一个持续更新的Project或者Repository中,就像我的这个Repository。在真正网上笔试的时候,大部分编程题是可以切出来在本地IDE上编程的,如果这道题你做过或者做过类似的,完全可以去翻你曾经的代码,然后直接套用或做简单的修改,比你再码一遍快的太多。
在面试一家公司之前,我觉得至少要做这几项调研:
- 该公司是干什么的。重资产还是轻资产,是卖产品的还是卖服务的
- 你投递的这一岗位可能是干什么的
- 该公司的主要技术结构。比如阿里就是Java,腾讯C++,百度PHP,当然这是主要的技术结构,一家大型公司涉及的开发语言多达十几种,但总有一两个是主要的,而从事该语言开发的员工也是最多的,也就是说,需求这类职位比较多,同时你的面试官从事这个方向的概率比较高。就国内而言,整体来说,搞游戏的大部分是C++,卖嵌入式产品的C和C++,卖嵌入式产品和服务的C、C++和Java,互联网公司Java或者C++再加上前端,卖手机的C++、Java、Android、前端,等等。
- 几轮面试,每轮面什么。就我个人经历来说,一般的邀请到酒店大堂面试的,就两轮,一天搞定,第一轮技术面,过了就第二轮HR面或者第二轮是主管技术面,算是比较轻松的,过或者凉都很快。还有一类公司是一天只面一面,在面试官酒店房间一对一,完了让你回去等二面通知,这类一般3面以上,一面考你编程语言和算法基础,二面考你综合基础知识和项目经历,3面才HR或者主管面。
- Java基础
- 数据结构
- 队列
- 链表
- 数组
- 栈
- 堆
- 树
- 二叉树
- 完全二叉树
- 平衡二叉树
- 二叉查找树
- 红黑树
- B-,B+,B*树
- LSM树
- Set
- Map
- 算法
- 排序算法
- 选择排序
- 冒泡排序
- 插入排序
- 快速排序
- 归并排序
- 希尔排序
- 堆排序
- 计数排序
- 桶排序
- 基数排序
- 查找算法
- 二分查找
- 字符串比较
- KMP算法
- 布隆过滤器
- 深度优先
- 广度优先
- 贪心算法
- 回溯算法
- 动态规划
- 排序算法
- JVM
- JVM内存划分
- JVM内存溢出
- 垃圾回收
- 如何判断对象已死
- 回收算法
- 垃圾收集器
- 回收过程
- JVM性能优化
- 类加载
- 类的生命周期
- 类加载器
- Java集合源码
- Vector
- ArrayList
- LinkedList
- HashMap
- Hashtable
- HashSet
- TreeMap
- ConcurrentHashMap
- 数据库
- 三大范式
- 索引
- 引擎
- 事务
- 隔离
- 锁
- 数据库性能优化
- 并发
- 并发的优缺点
- 线程
- 创建线程
- 线程状态切换
- 线程的基本操作
- 守护线程
- 什么是线程安全
- 锁
- 公平锁&非公平锁
- 悲观锁&乐观锁
- 可重入锁&不可重入锁
- 互斥锁&共享锁
- 死锁
- 产生死锁的四个必要条件
- 预防和解除
- 构建死锁
- 查看死锁
- 并发理论
- JMM内存模型
- 重排序
- happens-before原则
- 并发关键字
- synchronized
- volatile
- final
- 原子性、可见性、有序性
- Lock体系
- Lock与Synchronized比较
- AQS
- AQS源码解析
- ReentrantLock
- ReentrantReadWriteLock
- Condition机制
- LockSupport
- 并发容器
- ConcurrentHashMap
- CopyOnWriteArrayList
- BlockingQueue
- ConcurrentLinkedQueue
- 线程池
- ThreadPoolExecutor
- ScheduledThreadPoolExecutor
- 原子操作类
- 并发工具
- CountDownLatch
- CyclicBarrier
- Semaphore
- Exchanger
- 并发实战:生产-消费者问题
- wait/notifyAll实现
- await/signalAll实现
- BlockingQueue实现
- 设计模式
- 23种常见的设计模式
- JDK中的设计模式
- Spring中的设计模式
- MyBatis中的设计模式
- Spring
- IOC
- AOP
- 操作系统
- 进程、线程、协程
- Linux命令行
- 网络
- OSI七层模型
- TCP/IP
- HTTP/HTTP2.0/HTTPS
- 长连接、短连接
- 网络模型
- Epoll
- Java NIO
- Netty
- 什么是二叉树
- B树与B+树
- TCP三次握手、四次挥手的过程
- 类加载器有哪些
- JVM垃圾回收算法
- 垃圾收集器
- HTTP请求和响应内容
- 线程创建方式
- HashMap和ConcurrentHashMap的实现原理
- TCP/IP协议簇有哪些常见协议
- Java线程池的核心属性以及处理流程
- Java并发包原理
- 线程的生命周期
- JVM类加载机制
- JVM内存模型
- 数据库有哪些索引,索引原理
- JVM内存溢出有哪些
- Java8有哪些新特性
- HTTP请求的GET和POST分别是什么
- Session、Cookie、Token的区别
- HashMap工作原理及代码实现,什么时候用到红黑树
- ConcurrentHashMap工作原理及代码实现,如何统计所有元素个数
- 线程和进有哪些程的概念
- 并行和并发的概念
- 进程间通信方式
- Semaphore原理
- Exchanger原理
- ThreadLocal原理,为什么会出现OOM,出现的深层次原因
- 线程池实现原理
- 线程池的几种实现方式
- 如何保证线程安全
- 重入锁的概念,重入锁为什么可以防止死锁
- 产生死锁的四个条件
- Volatile实现原理
- synchronized实现原理
- synchronized与lock区别
- CAS无锁的概念
- 乐观锁和悲观锁
- 什么是ABA问题
- 偏向锁、轻量级锁、重量级锁、自旋锁的概念
- JVM OOM和SOE的示例及原因,如何排查与解决
- 如何判断对象是否可以回收
- 类加载器、双亲委派模型、类的生命周期、类如何加载到JVM中
- JVM内存模型
- 常见设计模式
- 设计模式六大原则
- 红黑树
- 一致性Hash原理,Hash环问题
- BIO、NIO、AIO的概念
- 长连接与短连接
- HTTP/HTTP2.0/HTTPS的区别
- 从浏览器地址栏输入URL到页面加载之间发生了什么
- DDL/DML/DCL分别指什么
- 数据库事务的ACID
- 事务隔离级别
- InnoDB与MyISAM的区别
- 数据库索引类别
- 什么是自适应哈希
- 聚集索引与非聚集索引的区别
- 为什么使用B+树作为MySQL的索引
- Servlet生命周期
- Spring Bean生命周期
- Spring IOC如何实现
- Spring AOP如何实现
- Spring事务
- Spring MVC
- Tomcat基础架构
- Hash冲突解决办法
- ArrayList和LinkedList的默认空间是多少
- Object的Hashcode
- Collections与Arrays的sort方法默认的排序方法是啥
- 浅拷贝与深拷贝
- Java反射的作用与实现原理
- Java中的回调机制
- synchronized与ReentrantLock哪个是公平锁
- CAS机制会出现什么问题
- 一个线程调用start两次会出现什么情况
- Minor GC与Full GC分别在什么时候发生
- 垃圾收集器各自的特点
- Java在什么时候会出现内存泄露
- 自己写的类被什么类加载器加载,什么时候加载
- 软引用和弱引用
- 数据库四大范式
- 数据库死锁如何解决
- MySQL如何实现并发
- 内存的页面置换算法
- 进程调度算法
- TCP为什么可靠
- List与Set的区别
- List与Map的区别
- ArrayList与LinkedList的区别
- ArrayList与Vector的区别
- HashMap与Hashtable的区别
- HashMap与HashSet的区别
- 多线程情况下HashMap为什么会出现死循环问题
- 线程的状态是如何转移的
- AQS同步队列
- 常见原子操作类有哪些
- 乐观锁的业务场景及实现方式
- 什么是动态代理
- 最大堆与最小堆
- 单例模式的实现方法,Spring中单例的实现原理
- TCP与UDP的区别
- 使用线程池的好处
- Object类有哪些方法
- 数据库简历索引的优缺点
- HashMap如何扩容
- 大量数据去重问题
- 写SQL
如何用学校邮箱申请IntelliJ IDEA开发软件的正版授权
- 注册JetBrains Account
- 根据验证邮件中的指引完成注册
- 登录并查看Licenses
- 申请学生版
- 填写EDU邮箱并申请
- 验证邮件
- 下载Ultimate版本
- 安装IDEA并使用已获得LICENSE的账号登录即可
- IDEA图文教程
- 下载并安装Git
- 配置本地Git的用户名和邮箱
$ git config --global user.name "username" //用户名
$ git config --global user.email "[email protected]" //邮箱
- 注册Github Account
- 在本地Git中创建SSH Key
$ ssh-keygen -t rsa -C "[email protected]"
Windows下会在用户文件夹下的.ssh
文件夹下生成两个秘钥文件
其中id_rsa
为私钥,id_rsa_pub
为公钥 - 将
id_rsa_pub
中的内容复制到Github SSH Key中, 添加, 可使用下述命令验证
$ ssh -T [email protected]
- 在Github中创建一个repository, 即Github远程仓库
- 初始化本地仓库并在本地Git中添加远程仓库
$ git init
$ git remote add origin [email protected]:xxx.git //github repository 的地址
- 然后即可使用
git push
命令将本地代码推动到远程仓库了
$ git push -u origin master //第一次推送需指明远程仓库的别名和分支
$ git push //后续只需push即可
- Git常用命令
$ git init //初始化
$ git add //添加文件
$ git commit //提交
$ git push //向远程仓库推送
$ git clone //从远程仓库克隆
$ git pull //从远程仓库拉取
- 参考资料
在Java的世界中, 依赖管理是不得不面对的问题. 所谓依赖就是在项目中引用的开源类库(别人的)或者项目里的其他模块(自己的).
在网站后台的开发过程中, 通常测试环境和生产环境的软件都是运行在Linux服务器上. 而为了在公网上提供网络服务, 你需要一个公网固定IP 以及一个域名, 如果你想每次访问你的个人网站的时候都输入IP 来访问, 那么域名便不是必需的.
购买一个当下云服务提供商的云主机能有效解决Linux操作系统和公网IP 的功能, 此外这些云服务提供商还一站式的提供了域名购买和备案服务(最新的规定购买的域名要备案才能使用了, 挺麻烦的, 周期一到两个月吧).
- 云服务商
- 体验腾讯云(试用开发者实验室)
- Linux命令行基础
- 文件管理
$ cd //切换工作目录
$ ls //查看文件信息
$ mkdir //创建目录
$ mv //移动
$ copy //复制
$ rm //删除文件
$ rmdir //删除目录
- 权限管理
$ chmod
- 启动服务
$ nohup
例如$ nohup java -jar xxx.jar >xxx.log 2>&1 & //java -jar xxx.jar:启动打包好的jar宝, xxx.log:指定标准输出为xxx.log, 2>&1:将标准错误流重定向到标准输出, &:让该命令在后台运行
- 文件管理
- 基本类型与运算
- Java中基本数据类型和包装类
Java是一种面向对象语言, Java中的所有对象都是由Object类派生而来, 但Java的八大基本类型是特例, Java中万物皆对象, 除了这八位大哥 - Java中boolean类型到底占用多少个字节?
- 运算符
- Java中基本数据类型和包装类
- 流程控制
- if-else
- switch
- while
- for
- break
- continue
- return
- 面向对象
- 权限控制
- 继承
- 接口
- 多态
- 反射
- 注解
- 异常
- 容器
- I/O
- 并发
- JUnit
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- MySQL
- MongoDB
- Redis
- Zookeeper
- Kafka
- FastDFS
- Elasticsearch
- Docker
- 并发编程网
- Stackoverflow
- Javaworld
- Java API Examples
- Java 技术驿站
- 剑指offer
- 张开涛的博客
- Javadoop
- 花钱的年华
- 梁桂钊的博客
- 我的博客(哈哈哈哈,忍不住放了上来)
我也不知道,说点体会!
俗语:万变不离宗
- 设计模式
- 代码整洁之道
- 看源码去体会设计**