美文网首页java基础或面试问题我爱编程TODO
一个牛逼的Coder是这样诞生的

一个牛逼的Coder是这样诞生的

作者: cuteximi_1995 | 来源:发表于2018-05-07 19:40 被阅读831次

    大厂offer拿到手软,同样毕业,为什么别人可以拿到很多大厂的offer?大 厂更看重毕业生哪一点?

    阅读文本大概需要 4 分钟。

    今天我给大家分享一个帖子:

    一个有实力的coder应该要知道的领域

    基础知识


    image

    1.算法和数据结构

    数据,链表,二叉树,队列,栈的各种操作(性能,场景)

    二分查找和各种变种的二分查找

    各类排序算法以及时间复杂度分析

    各类算法题(手写)

    理解并可以分子时间和空间复杂度

    动态规划

    红黑树/AVL树,Hash树,Tire树,B树,B+树

    图算法

    2.计算机网络

    OSI七层协议(TCP四层)

    每一层的协议

    URL到页面的过程

    HTTPhttp/https 1.0 1.1 2.0

    get/post以及幂等性

    http协议头相关网络攻击(CSRF,XSS)

    TCP/IP三次握手,四次挥手拥塞控制(过程/阈值)

    流量控制与滑动窗口

    TCP和UDP的比较子网划分(笔试)

    DDOS攻击

    IO/NIO/AIO三者原理,各个语言是怎么实现的;

    Netty

    Linux内核select poll epoll

    3.数据库

    索引(分类以及优化方式,失效条件,底层结构);

    sql语法;

    引擎对比;

    数据库的锁(行锁,表锁,页级索,意向锁,读锁,写锁,悲观锁,乐观锁,以及枷锁的select sql方式);

    隔离界别,依次解决的问题(脏读,不可重复读,幻读);

    事物的ACID;

    B树,B+树优化(explain,慢查询,show profile);

    数据库的范式分库分表,主从复制,读写分离;

    Nosql相关(redis和mencached区别);

    redis相关;

    4.操作系统

    进程通信IPC(几种方式),与线程的区别;

    OS的几种策略(页面置换,进程调度,每个里面算法);

    互斥与死锁相关的;

    Linux常用命令;

    Linux内核相关;

    5.编程语言(java)

    java基础、集合、并发;

    多线程(线程池,SYNC和Lock锁机制,线程通信,volatile、ThreadLocal,Cyclibarrier,Atom包,CountDownLatch,AQS,CAS原理);

    JVM(内存模型,gc垃圾回收,包括分代,GC算法,收集器,类加载和双亲委派机制,内存泄漏和内存溢出);

    IO/NIO相关、反射和代理,异常;

    java8相关的;

    序列化、设计模式(常用的);

    web相关的(servlet, cookie/session, Spring(AOP,IOC,MVC事务,动态代理);

    mybatis.Tomcat,Hibernate等看源码;

    6.分布式架构

    (了解原理就行,如果真的有实践经验更好)

    CAP原理和BASE理论。

    Nosql与KV存储(redis,hbase,mongodb,memcached等)

    服务化理论(包括服务发现、治理等,zookeeper、etcd、springcloud微服务、)

    负载均衡(原理、cdn、一致性hash)

    RPC框架(包括整体的一些框架理论,通信的netty,序列化协议thrift,protobuff等)

    消息队列(原理、kafka,activeMQ,rocketMQ)

    分布式存储系统(GFS、HDFS、fastDFS)、存储模型(skipList、LSM等)

    分布式事务、分布式锁等

    7.脚本语言

    (只是作为横向扩充,一般问到linux也会问问shell脚本)

    python , php ,shell ,golang 。

    8.大数据与数据分析

    hadoop生态圈(hive、hbase、hdfs、zookeeper、storm、kafka) spark体系 ,语言:python、R、scala 搜索引擎与技术

    9.机器学习算法

    模型和算法很多。不细说了,如果很熟练就去投算法,国内很多公司都算法岗都很稀缺,其他岗可以大概了解下理论。

    10.其他工具的理论和使用

    这个更多了,问的多的比如git、docker、maven/gradle、Jenkins等等,自己需要的话选择性地去学。

    说了这么多...推荐几本良心的书籍吧。

    推荐书单


    image

    算法与数据结构:

    数据结构(严蔚敏)/大话数据结构

    剑指Offer/程序员面试金典/编程珠玑/编程之美/牛客网+leetcode

    程序员笔试面试最优解(左程云)

    Java的版本(不是很推荐): 数据结构与算法经典问题解析(Java语言描述)

    图解数据结构(使用Java)


    计算机网络:

    计算机网络(谢希仁)

    TCP/IP 详解

    HTTP权威指南

    图解TCP/IP

    图解HTTP


    数据库:

    数据库主要是多用,书上主要看索引和性能的部分

    高性能MySQL/深入浅出MySQL


    操作系统:

    OS原理:操作系统(课本,黑色的那个)


    Linux:

    Linux私房菜 //鸟哥写的,很全,包括bash部分

    跟阿铭学Linux //主要偏重于命令和操作,比较浅显


    Java:

    Java疯狂讲义/Java编程思想/Java核心技术 卷1

    深入理解Java虚拟机

    并发编程的艺术/多线程编程核心技术

    Effective Java

    Java程序员面试笔试宝典 //何昊的那本,个人感觉是突击知识点的神器

    Java程序性能优化

    实战Java高并发程序设计


    Java Web:

    Spring实战/轻量级JavaEE 企业应用(红皮,讲SSH的)

    //主要看最后一部分Spring的就可以

    深入JavaWeb技术内幕(阿里 许令波)//这个讲的还是比较深的 SpringBoot实战/深入实践SpringBoot


    设计模式:

    大话设计模式 //通俗易懂

    各类博客的总结


    分布式与大数据:

    分布式服务框架原理与实践

    大型网站技术架构

    Hadoop实战(hadoop体系包括得很全)


    其他:

    Git:

    Git权威指南

    Git官方讲解视频(牛客网有带字幕的)

    Redis:

    Redis实战

    是不是觉得有点多啊?当然,大佬都是一步一步积累的,加油吧!优秀的你,肯定有时间,有耐心,有毅力!

    本文编辑:cuteximi & IT充电空间

    参考:网友分享 & 整理

    版式:cuteximi

        • End - - - -

    如果觉得对你有帮助,请持续关注转发,谢谢各位。

    cuteximi.com


    image

    优秀的你,长按关注:IT充电空间

    每天几分钟

    获取贴心技术贴

    欢迎↓↓↓留言点赞收藏~

    相关文章

      网友评论

      本文标题:一个牛逼的Coder是这样诞生的

      本文链接:https://www.haomeiwen.com/subject/arovrftx.html