当前位置: 首页 > news >正文

怎样做视频播放网站1688货源网一件代发玩具

怎样做视频播放网站,1688货源网一件代发玩具,网站排版用什么软件,wordpress 后台搜索主要包括以下几个部分#xff1a; Java 基础知识点Java 常见集合高并发编程#xff08;JUC 包#xff09;JVM 内存管理Java 8 知识点网络协议相关数据库相关MVC 框架相关大数据相关Linux 命令相关面试#xff0c;是大家从学校走向社会的第一步。 互联网公司的校园招聘…主要包括以下几个部分 Java 基础知识点Java 常见集合高并发编程JUC 包JVM 内存管理Java 8 知识点网络协议相关数据库相关MVC 框架相关大数据相关Linux 命令相关面试是大家从学校走向社会的第一步。 互联网公司的校园招聘从形式上说面试一般分为 2-3 轮技术面试 1 轮 HR 面试。但是一些公司确实是没有 HR 面试的直接就是三轮技术面。 技术面试中面试官一般会先就你所应聘的岗位进行相关知识的考察也叫基础知识和业务逻辑面试。只要你回答的不是特别差面试官通常会说“咱们写个代码吧”这个时候就开始了算法面试。 也就是说一轮技术面试 基础知识和业务逻辑面试 算法面试。 在本篇文章中我们主要从技术面试聊起。技术面试包括业务逻辑和基础知识面试。 首先是业务逻辑面试 也就是讲项目。 面试官会对你简历上写的若干个项目其中之一拿出来和你聊聊。在期间会针对你所做的东西进行深度挖掘。 包括为什么要这么做优缺点分析假如重新让你做一次你打算怎么做 等等。这个环节主要考察我们对自己做过的项目实习项目或者校内项目是否有一个清晰的认识。 关于业务逻辑面试的准备建议在平时多多思考总结对项目的数据来源、整体运行框架都应该熟悉掌握。 比如说你在某公司实习过程中就可以进行总结而不必等到快离职的时候慌慌张张的去总结该项目。 接下来是基础知识面试。 Java 开发属于后台开发方向有人说后台开发很坑因为需要学习的东西太多了。没错这个岗位就是需要学习好多东西。包括本语言Java/C/PHP基础、数据库、网络协议、Linux 系统、计算机原理甚至前端相关知识都可以考察你而且并不超纲 。 有时候你报的是后台开发岗并且熟悉的是 Java 语言但是面试官却是 C 开发方向的就是这么无奈~ 好了闲话少说让我们开始分类讲解常见面试知识点。 一 Java 基础知识点 1面向对象的特性有哪些 答封装、继承和多态。 2Java 中覆盖和重载是什么意思 解析覆盖和重载是比较重要的基础知识点并且容易混淆所以面试中常见。答覆盖Override是指子类对父类方法的一种重写只能比父类抛出更少的异常访问权限不能比父类的小。 被覆盖的方法不能是 private 的否则只是在子类中重新定义了一个方法重载Overload表示同一个类中可以有多个名称相同的方法但这些方法的参数列表各不相同。 面试官 那么构成重载的条件有哪些 答参数类型不同、参数个数不同、参数顺序不同。 面试官 函数的返回值不同可以构成重载吗为什么 答不可以因为 Java 中调用函数并不需要强制赋值。举例如下 如下两个方法 1 2 void f(){} int f(){ return 1;} 只要编译器可以根据语境明确判断出语义比如在 int x f();中那么的确可以据此区分重载方法。不过 有时你并不关心方法的返回值你想要的是方法调用的其他效果 这常被称为 “为了副作用而调用”这时你可能会调用方法而忽略其返回值所以如果像下面的调用 1 fun(); 此时 Java 如何才能判断调用的是哪一个 f() 呢别人如何理解这种代码呢所以根据方法返回值来区分重载方法是行不通的。 3抽象类和接口的区别有哪些 答 抽象类中可以没有抽象方法接口中的方法必须是抽象方法抽象类中可以有普通的成员变量接口中的变量必须是 static final 类型的必须被初始化 , 接口中只有常量没有变量。抽象类只能单继承接口可以继承多个父接口Java8 中接口中会有 default 方法即方法可以被实现。面试官抽象类和接口如何选择 答 如果要创建不带任何方法定义和成员变量的基类那么就应该选择接口而不是抽象类。如果知道某个类应该是基类那么第一个选择的应该是让它成为一个接口只有在必须要有方法定义和成员变量的时候才应该选择抽象类。因为抽象类中允许存在一个或多个被具体实现的方法只要方法没有被全部实现该类就仍是抽象类。4Java 和 C 的区别 解析虽然我们不太懂 C但是就是会这么问尤其是三面总监级别面试中。 答 都是面向对象的语言都支持封装、继承和多态指针Java 不提供指针来直接访问内存程序更加安全继承 Java 的类是单继承的C 支持多重继承 Java 通过一个类实现多个接口来实现 C 中的多重继承 Java 中类不可以多继承但是接口可以多继承内存 Java 有自动内存管理机制不需要程序员手动释放无用内存。5Java 中的值传递和引用传递 解析这类题目面试官会手写一个例子让你说出函数执行结果详细举例请查阅我的博客Java 值传递和引用传递基础分析。 答值传递是指对象被值传递意味着传递了对象的一个副本即使副本被改变也不会影响源对象。引用传递是指对象被引用传递意味着传递的并不是实际的对象而是对象的引用。 因此外部对引用对象的改变会反映到所有的对象上。 6JDK 中常用的包有哪些 答java.lang、java.util、http://java.io、http://java.net、java.sql。 7JDKJRE 和 JVM 的联系和区别 答JDK 是 java 开发工具包是 java 开发环境的核心组件并提供编译、调试和运行一个 java 程序所需要的所有工具可执行文件和二进制文件是一个平台特定的软件。 JRE 是 java 运行时环境是 JVM 的实施实现提供了运行 java 程序的平台。JRE 包含了 JVM但是不包含 java 编译器 / 调试器之类的开发工具。 JVM 是 java 虚拟机当我们运行一个程序时JVM 负责将字节码转换为特定机器代码JVM 提供了内存管理 / 垃圾回收和安全机制等。 这种独立于硬件和操作系统正是 java 程序可以一次编写多处执行的原因。 区别 JDK 用于开发JRE 用于运行 java 程序JDK 和 JRE 中都包含 JVMJVM 是 java 编程语言的核心并且具有平台独立性。Others限于篇幅面试中 Java 基础知识点还有反射、泛型、注解等。 小结本节主要阐述了 Java 基础知识点这些问题主要是一面面试官在考察难度不大适当复习下应该没什么问题。 二Java 中常见集合 集合这方面的考察相当多这部分是面试中必考的知识点。 1说说常见的集合有哪些吧 答Map 接口和 Collection 接口是所有集合框架的父接口 Collection 接口的子接口包括Set 接口和 List 接口Map 接口的实现类主要有HashMap、TreeMap、Hashtable、ConcurrentHashMap 以及 Properties 等Set 接口的实现类主要有HashSet、TreeSet、LinkedHashSet 等List 接口的实现类主要有ArrayList、LinkedList、Stack 以及 Vector 等。2HashMap 和 Hashtable 的区别有哪些必问 答 HashMap 没有考虑同步是线程不安全的Hashtable 使用了 synchronized 关键字是线程安全的前者允许 null 作为 Key后者不允许 null 作为 Key。3HashMap 的底层实现你知道吗 答在 Java8 之前其底层实现是数组 链表实现Java8 使用了数组 链表 红黑树实现。此时你可以简单的在纸上画图分析 4ConcurrentHashMap 和 Hashtable 的区别 必问 答ConcurrentHashMap 结合了 HashMap 和 HashTable 二者的优势。HashMap 没有考虑同步hashtable 考虑了同步的问题。但是 hashtable 在每次同步执行时都要锁住整个结构。 ConcurrentHashMap 锁的方式是稍微细粒度的。 ConcurrentHashMap 将 hash 表分为 16 个桶默认值诸如 get,put,remove 等常用操作只锁当前需要用到的桶。 面试官ConcurrentHashMap 的具体实现知道吗 答 该类包含两个静态内部类 HashEntry 和 Segment前者用来封装映射表的键值对后者用来充当锁的角色Segment 是一种可重入的锁 ReentrantLock每个 Segment 守护一个 HashEntry 数组里得元素当对 HashEntry 数组的数据进行修改时必须首先获得对应的 Segment 锁。5HashMap 的长度为什么是 2 的幂次方 答 通过将 Key 的 hash 值与 length-1 进行 运算实现了当前 Key 的定位2 的幂次方可以减少冲突碰撞的次数提高 HashMap 查询效率如果 length 为 2 的次幂 则 length-1 转化为二进制必定是 11111……的形式在于 h 的二进制与操作效率会非常的快而且空间不浪费如果 length 不是 2 的次幂比如 length 为 15则 length-1 为 14对应的二进制为 1110在于 h 与操作最后一位都为 0而 0001001101011001101101111101 这几个位置永远都不能存放元素了空间浪费相当大。更糟的是这种情况中数组可以使用的位置比数组长度小了很多这意味着进一步增加了碰撞的几率减慢了查询的效率这样就会造成空间的浪费。 6List 和 Set 的区别是啥 答List 元素是有序的可以重复Set 元素是无序的不可以重复。 7List、Set 和 Map 的初始容量和加载因子 答 1. List ArrayList 的初始容量是 10加载因子为 0.5 扩容增量原容量的 0.5 倍 1一次扩容后长度为 16。Vector 初始容量为 10加载因子是 1。扩容增量原容量的 1 倍如 Vector 的容量为 10一次扩容后是容量为 20。2. Set HashSet初始容量为 16加载因子为 0.75 扩容增量原容量的 1 倍 如 HashSet 的容量为 16一次扩容后容量为 32 3. Map HashMap初始容量 16加载因子为 0.75 扩容增量原容量的 1 倍 如 HashMap 的容量为 16一次扩容后容量为 32 8Comparable 接口和 Comparator 接口有什么区别 答 前者简单但是如果需要重新定义比较类型时需要修改源代码。后者不需要修改源代码自定义一个比较器实现自定义的比较方法。具体解析参考我的博客Java 集合框架—Set9Java 集合的快速失败机制 “fail-fast” 答它是 java 集合的一种错误检测机制当多个线程对集合进行结构上的改变的操作时有可能会产生 fail-fast 机制。 例如 假设存在两个线程线程 1、线程 2线程 1 通过 Iterator 在遍历集合 A 中的元素在某个时候线程 2 修改了集合 A 的结构是结构上面的修改而不是简单的修改集合元素的内容那么这个时候程序就会抛出 ConcurrentModificationException 异常从而产生 fail-fast 机制。 原因 迭代器在遍历时直接访问集合中的内容并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化就会改变 modCount 的值。 每当迭代器使用 hashNext()/next() 遍历下一个元素之前都会检测 modCount 变量是否为 expectedmodCount 值是的话就返回遍历否则抛出异常终止遍历。 解决办法 在遍历过程中所有涉及到改变 modCount 值得地方全部加上 synchronized使用 CopyOnWriteArrayList 来替换 ArrayList。小结本小节是 Java 中关于集合的考察是 Java 岗位面试中必考的知识点除了应该掌握以上的问题包括各个集合的底层实现也建议各位同学阅读加深理解。 三高并发编程-JUC 包 在 Java 5.0 提供了 java.util.concurrent简称 JUC 包在此包中增加了在并发编程中很常用的实用工具类用于定义类似于线程的自定义子系统包括线程池、异步 IO 和轻量级任务框架。 1多线程和单线程的区别和联系 答 在单核 CPU 中将 CPU 分为很小的时间片在每一时刻只能有一个线程在执行是一种微观上轮流占用 CPU 的机制。多线程会存在线程上下文切换会导致程序执行速度变慢即采用一个拥有两个线程的进程执行所需要的时间比一个线程的进程执行两次所需要的时间要多一些。结论即采用多线程不会提高程序的执行速度反而会降低速度但是对于用户来说可以减少用户的响应时间。 2如何指定多个线程的执行顺序 解析面试官会给你举个例子如何让 10 个线程按照顺序打印 0123456789写代码实现 答 设定一个 orderNum每个线程执行结束之后更新 orderNum指明下一个要执行的线程。并且唤醒所有的等待线程。在每一个线程的开始要 while 判断 orderNum 是否等于自己的要求值不是则 wait是则执行本线程。3线程和进程的区别必考 答 进程是一个 “执行中的程序”是系统进行资源分配和调度的一个独立单位线程是进程的一个实体一个进程中拥有多个线程线程之间共享地址空间和其它资源所以通信和同步等操作线程比进程更加容易线程上下文的切换比进程上下文切换要快很多。1进程切换时涉及到当前进程的 CPU 环境的保存和新被调度运行进程的 CPU 环境的设置。2线程切换仅需要保存和设置少量的寄存器内容不涉及存储管理方面的操作。4多线程产生死锁的 4 个必要条件 答 互斥条件一个资源每次只能被一个线程使用请求与保持条件一个线程因请求资源而阻塞时对已获得的资源保持不放不剥夺条件进程已经获得的资源在未使用完之前不能强行剥夺循环等待条件若干线程之间形成一种头尾相接的循环等待资源关系。面试官如何避免死锁经常接着问这个问题哦~ 答指定获取锁的顺序举例如下 比如某个线程只有获得 A 锁和 B 锁才能对某资源进行操作在多线程条件下如何避免死锁获得锁的顺序是一定的比如规定只有获得 A 锁的线程才有资格获取 B 锁按顺序获取锁就可以避免死锁5sleep( ) 和 wait( n)、wait( ) 的区别 答 sleep 方法是 Thread 类的静态方法当前线程将睡眠 n 毫秒线程进入阻塞状态。当睡眠时间到了会解除阻塞进行可运行状态等待 CPU 的到来。睡眠不释放锁如果有的话wait 方法是 Object 的方法必须与 synchronized 关键字一起使用线程进入阻塞状态当 notify 或者 notifyall 被调用后会解除阻塞。但是只有重新占用互斥锁之后才会进入可运行状态。睡眠时释放互斥锁。6synchronized 关键字 答底层实现 进入时执行 monitorenter将计数器 1释放锁 monitorexit 时计数器-1当一个线程判断到计数器为 0 时则当前锁空闲可以占用反之当前线程进入等待状态。含义monitor 机制 Synchronized 是在加锁加对象锁。对象锁是一种重量锁monitorsynchronized 的锁机制会根据线程竞争情况在运行时会有偏向锁单一线程、轻量锁多个线程访问 synchronized 区域、对象锁重量锁多个线程存在竞争的情况、自旋锁等。 该关键字是一个几种锁的封装。 7volatile 关键字 答该关键字可以保证可见性不保证原子性。 功能 主内存和工作内存直接与主内存产生交互进行读写操作保证可见性禁止 JVM 进行的指令重排序。解析关于指令重排序的问题可以查阅 DCL 双检锁失效相关资料。 8ThreadLocal线程局部变量关键字 答当使用 ThreadLocal 维护变量时其为每个使用该变量的线程提供独立的变量副本所以每一个线程都可以独立的改变自己的副本而不会影响其他线程对应的副本。 ThreadLocal 内部实现机制 每个线程内部都会维护一个类似 HashMap 的对象称为 ThreadLocalMap里边会包含若干了 EntryK-V 键值对相应的线程被称为这些 Entry 的属主线程Entry 的 Key 是一个 ThreadLocal 实例Value 是一个线程特有对象。Entry 的作用即是为其属主线程建立起一个 ThreadLocal 实例与一个线程特有对象之间的对应关系Entry 对 Key 的引用是弱引用Entry 对 Value 的引用是强引用。 9Atomic 关键字 答可以使基本数据类型以原子的方式实现自增自减等操作。参考我的博客concurrent.atomic 包下的类 AtomicInteger 的使用。 10线程池有了解吗必考 答java.util.concurrent.ThreadPoolExecutor 类就是一个线程池。客户端调用 ThreadPoolExecutor.submit(Runnable task) 提交任务线程池内部维护的工作者线程的数量就是该线程池的线程池大小有 3 种形态 当前线程池大小 表示线程池中实际工作者线程的数量最大线程池大小 maxinumPoolSize表示线程池中允许存在的工作者线程的数量上限核心线程大小 corePoolSize 表示一个不大于最大线程池大小的工作者线程数量上限。如果运行的线程少于 corePoolSize则 Executor 始终首选添加新的线程而不进行排队如果运行的线程等于或者多于 corePoolSize则 Executor 始终首选将请求加入队列而不是添加新线程如果无法将请求加入队列即队列已经满了则创建新的线程除非创建此线程超出 maxinumPoolSize 在这种情况下任务将被拒绝。小结本小节内容涉及到 Java 中多线程编程线程安全等知识是面试中的重点和难点。 四JVM 内存管理 既然是 Java 开发面试那么对 JVM 的考察当然也是必须的面试官一般会问你对 JVM 有了解吗 我通常都会把我所了解的都说一遍包括JVM 内存划分、JVM 垃圾回收的含义有哪些 GC 算法年轻代和老年代各自的特点统统阐述一遍。 1JVM 内存划分 方法区线程共享常量、静态变量、JIT(即时编译器) 编译后的代码也都在方法区堆内存线程共享垃圾回收的主要场所程序计数器 当前线程执行的字节码的位置指示器虚拟机栈栈内存保存局部变量、基本数据类型变量以及堆内存中某个对象的引用变量本地方法栈 为 JVM 提供使用 native 方法的服务。2类似-Xms、-Xmn 这些参数的含义 答 堆内存分配 JVM 初始分配的内存由-Xms 指定默认是物理内存的 1/64JVM 最大分配的内存由-Xmx 指定默认是物理内存的 1/4默认空余堆内存小于 40% 时JVM 就会增大堆直到-Xmx 的最大限制空余堆内存大于 70% 时JVM 会减少堆直到 -Xms 的最小限制因此服务器一般设置-Xms、-Xmx 相等以避免在每次 GC 后调整堆的大小。对象的堆内存由称为垃圾回收器的自动内存管理系统回收。非堆内存分配 JVM 使用-XX:PermSize 设置非堆内存初始值默认是物理内存的 1/64由 XX:MaxPermSize 设置最大非堆内存的大小默认是物理内存的 1/4-Xmn2G设置年轻代大小为 2G-XX:SurvivorRatio设置年轻代中 Eden 区与 Survivor 区的比值。3垃圾回收算法有哪些 答 引用计数 原理是此对象有一个引用即增加一个计数删除一个引用则减少一个计数。垃圾回收时只用收集计数为 0 的对象。此算法最致命的是无法处理循环引用的问题标记-清除 此算法执行分两阶段。第一阶段从引用根节点开始标记所有被引用的对象第二阶段遍历整个堆把未标记的对象清除此算法需要暂停整个应用同时会产生内存碎片 复制算法 此算法把内存空间划为两个相等的区域每次只使用其中一个区域。垃圾回收时遍历当前使用区域把正在使用中的对象复制到另外一个区域中此算法每次只处理正在使用中的对象因此复制成本比较小同时复制过去以后还能进行相应的内存整理不会出现 “碎片” 问题。当然此算法的缺点也是很明显的就是需要两倍内存空间 标记-整理 此算法结合了 “标记-清除” 和 “复制” 两个算法的优点。也是分两阶段第一阶段从根节点开始标记所有被引用对象第二阶段遍历整个堆把清除未标记对象并且把存活对象 “压缩” 到堆的其中一块按顺序排放。此算法避免了 “标记-清除” 的碎片问题同时也避免了 “复制” 算法的空间问题。 4root 搜索算法中哪些可以作为 root 答 被启动类bootstrap 加载器加载的类和创建的对象JavaStack 中的引用的对象 (栈内存中引用的对象)方法区中静态引用指向的对象方法区中常量引用指向的对象Native 方法中 JNI 引用的对象。5GC 什么时候开始 答GC 经常发生的区域是堆区堆区还可以细分为新生代、老年代新生代还分为一个 Eden 区和两个 Survivor 区。 对象优先在 Eden 中分配当 Eden 中没有足够空间时虚拟机将发生一次 Minor GC因为 Java 大多数对象都是朝生夕灭所以 Minor GC 非常频繁而且速度也很快Full GC发生在老年代的 GC当老年代没有足够的空间时即发生 Full GC发生 Full GC 一般都会有一次 Minor GC。大对象直接进入老年代如很长的字符串数组虚拟机提供一个XX:PretenureSizeThreadhold 参数令大于这个参数值的对象直接在老年代中分配避免在 Eden 区和两个 Survivor 区发生大量的内存拷贝 发生 Minor GC 时虚拟机会检测之前每次晋升到老年代的平均大小是否大于老年代的剩余空间大小如果大于则进行一次 Full GC如果小于则查看 HandlePromotionFailure 设置是否允许担保失败如果允许那只会进行一次 Minor GC如果不允许则改为进行一次 Full GC。6内存泄漏和内存溢出 答 概念 内存溢出指的是内存不够用了内存泄漏是指对象可达但是没用了。即本该被 GC 回收的对象并没有被回收内存泄露是导致内存溢出的原因之一内存泄露积累起来将导致内存溢出。内存泄漏的原因分析 长生命周期的对象引用短生命周期的对象没有将无用对象置为 null。小结本小节涉及到 JVM 虚拟机包括对内存的管理等知识相对较深。除了以上问题面试官会继续问你一些比较深的问题可能也是为了看看你的极限在哪里吧。比如内存调优、内存管理是否遇到过内存泄漏的实际案例、是否真正关心过内存等。由于本人实际项目经验不足这些深层次问题并没有接触过各位有需要可以上网查阅。 五Java 8 相关知识点 关于 Java8 中新知识点面试官会让你说说 Java8 你了解多少下边主要阐述我所了解并且在面试中回答的 Java8 新增知识点。 1HashMap 的底层实现有变化HashMap 是数组 链表 红黑树JDK1.8 增加了红黑树部分实现。 2JVM 内存管理方面由元空间代替了永久代。 区别 元空间并不在虚拟机中而是使用本地内存默认情况下元空间的大小仅受本地内存限制也可以通过-XXMetaspaceSize 指定元空间大小。3Lambda 表达式也称为闭包允许我们将函数当成参数传递给某个方法或者把代码本身当做数据处理。 4函数式接口指的是只有一个函数的接口java.lang.Runnable 和 java.util.concurrent.Callable 就是函数式接口的例子java8 提供了一个特殊的注解 Functionallnterface 来标明该接口是一个函数式接口。 5引入重复注解Java 8 中使用 Repeatable 注解定义重复注解。 6接口中可以实现方法 default 方法。 7 注解的使用场景拓宽 注解几乎可以使用在任何元素上局部变量、接口类型、超类和接口实现类甚至可以用在函数的异常定义上。 8 新的包 java.time 包 包含了所有关于日期、时间、时区、持续时间和时钟操作的类这些类都是不可变的、线程安全的。小结Java8 的一些新特性面试官一般情况下不要求你有多么精通主要是看看你有没有一些了解。 六网络协议相关 网络协议方面考察最多的包括服务器和客户端在三次握手、四次挥手过程中的状态变化还有网络拥塞控制及其解决办法等。 1三次握手、四次挥手示意图 总共有四种状态主动建立连接、主动断开连接、被动建立连和被动断开连接 两两组合还是 4 种组合 主动建立连接、主动断开连接会经历的状态SYNC_SENT——ESTABLISHED—-FIN_WAIT_1—-FIN_WAIT_2—-TIME_WAIT主动建立连接、被动断开连接会经历的状态SYNC_SENT——ESTABLISHED—-CLOSE_WAIT—-LAST_ACK被动建立连接、主动断开连接会经历的状态LISTEN—-SYN_RCVD—-ESTABLISHED—-FIN_WAIT_1—-FIN_WAIT_2—-TIME_WAIT被动建立连接、被动断开连接会经历的状态LISTEN—-SYN_RCVD—-ESTABLISHED—-CLOSE_WAIT—-LAST_ACK2滑动窗口机制 由发送方和接收方在三次握手阶段互相将自己的最大可接收的数据量告诉对方。也就是自己的数据接收缓冲池的大小。这样对方可以根据已发送的数据量来计算是否可以接着发送。 在处理过程中当接收缓冲池的大小发生变化时要给对方发送更新窗口大小的通知。 3拥塞避免机制 拥塞对资源的需求超过了可用的资源。若网络中许多资源同时供应不足网络的性能就要明显变坏整个网络的吞吐量随之负荷的增大而下降。 拥塞控制防止过多的数据注入到网络中使得网络中的路由器或链路不致过载。 拥塞控制方法 慢开始 拥塞避免快重传 快恢复。 4浏览器中输入“www.xxx.com” 之后都发生了什么请详细阐述。 解析经典的网络协议问题。 答 由域名→IP 地址寻找 IP 地址的过程依次经过了浏览器缓存、系统缓存、hosts 文件、路由器缓存、 递归搜索根域名服务器。建立 TCP/IP 连接三次握手具体过程由浏览器发送一个 HTTP 请求经过路由器的转发通过服务器的防火墙该 HTTP 请求到达了服务器服务器处理该 HTTP 请求返回一个 HTML 文件浏览器解析该 HTML 文件并且显示在浏览器端这里需要注意HTTP 协议是一种基于 TCP/IP 的应用层协议进行 HTTP 数据请求必须先建立 TCP/IP 连接可以这样理解HTTP 是轿车提供了封装或者显示数据的具体形式Socket 是发动机提供了网络通信的能力。两个计算机之间的交流无非是两个端口之间的数据通信 , 具体的数据会以什么样的形式展现是以不同的应用层协议来定义的。5常见 HTTP 状态码 1xx临时响应2xx成功3xx重定向表示要完成请求需要进一步操作4xx错误表示请求可能出错妨碍了服务器的处理5xx服务器错误表示服务器在尝试处理请求时发生内部错误常见状态码200成功304未修改自从上次请求后请求的网页未修改过。服务器返回此响应时不会返回网页内容401未授权请求要求身份验证403禁止服务器拒绝请求404未找到服务器找不到请求的网页6TCP 和 UDP 的区别 答 回答发送数据前是否存在建立连接的过程过确认机制丢包可以重发保证数据的正确性不保证正确性只是单纯的负责发送数据包UDP 是面向报文的。发送方的 UDP 对应用程序交下来的报文在添加首部后就向下交付给 IP 层。既不拆分也不合并而是保留这些报文的边界因 此应用程序需要选择合适的报文大小UDP 的头部只有 8 个字节相对于 TCP 头部的 20 个字节信息包的额外开销很小。限于篇幅更多网络协议相关知识请参阅我的博客TCP/IP 协议面试常问知识点倾心总结 小结必须熟练掌握 TCP 和 UDP 的区别、三次握手和四次挥手的状态切换必考。 七数据库知识点 既然是后端开发那么与数据库相关的知识点也是必不可少的。 1MySQL 和 MongoDB 的区别有哪些如何选择 2MongoDB 的优缺点有哪些 ps 本人对这一块不是很熟悉就不附上参考答案了请各位小伙伴自行学习哈~ 3听说过事务吗必考 答作为单个逻辑工作单元执行的一系列操作满足四大特性 原子性Atomicity事务作为一个整体被执行 要么全部执行要么全部不执行一致性Consistency保证数据库状态从一个一致状态转变为另一个一致状态隔离性Isolation多个事务并发执行时一个事务的执行不应影响其他事务的执行持久性Durability一个事务一旦提交对数据库的修改应该永久保存。4事务的并发问题有哪几种 答丢失更新、脏读、不可重复读以及幻读。 5数据库中的锁有哪几种答独占锁、排他锁以及更新锁。 6事务的隔离级别有哪几种 答读未提交、读已提交、可重复读和序列化。 扩展问题MySQL 事务默认隔离级别是哪个 答可重复读。 解析关于问题456的详细解答请参阅我的博客数据库并发机制和事务的隔离级别详解 ps关于数据库事务方面的深层次考察还有分布式事务即两段提交和三段提交等限于本人水平请各位自行学习 7数据库的索引有什么作用必考 底层数据结构是什么为什么使用这种数据结构 答 索引 是对数据库表中一列或多列的值进行排序的一种结构使用索引可快速访问数据库表中的特定信息底层数据结构是 B 树使用 B 树的原因查找速度快、效率高在查找的过程中每次都能抛弃掉一部分节点减少遍历个数。 此时你应该在白纸上画出什么是 B 树 扩展问题聚簇索引和非聚簇索引的区别 8MyISAM 和 InnoDB 的区别有哪些 答 MyISAM 不支持事务InnoDB 是事务类型的存储引擎MyISAM 只支持表级锁BDB 支持页级锁和表级锁默认为页级锁而 InnoDB 支持行级锁和表级锁默认为行级锁MyISAM 引擎不支持外键InnoDB 支持外键MyISAM 引擎的表在大量高并发的读写下会经常出现表损坏的情况对于 count( ) 查询来说 MyISAM 更有优势InnoDB 是为处理巨大数据量时的最大性能设计它的 CPU 效率可能是任何其它基于磁盘的关系数据库引擎所不能匹敌的MyISAM 支持全文索引FULLTEXTInnoDB 不支持MyISAM 引擎的表的查询、更新、插入的效率要比 InnoDB 高。最主要的区别是MyISAM 表不支持事务、不支持行级锁、不支持外键。 InnoDB 表支持事务、支持行级锁、支持外键。可直接回答这个 9数据库中 Where、group by、having 关键字 答 关键字作用 where 子句用来筛选 from 子句中指定的操作所产生的的行group by 子句用来分组 where 子句的输出having 子句用来从分组的结果中筛选行having 和 where 的区别 语法类似where 搜索条件在进行分组操作之前应用having 搜索条件在进行分组操作之后应用having 可以包含聚合函数 sum、avg、max 等having 子句限制的是组而不是行。当同时含有 where 子句、group by 子句 、having 子句及聚集函数时执行顺序如下 执行 where 子句查找符合条件的数据使用 group by 子句对数据进行分组对 group by 子句形成的组运行聚集函数计算每一组的值最后用 having 子句去掉不符合条件的组。10还有一些问题如 MySQL 和 SQL Server 用法上的区别、limit 关键字的使用等问题。 小结数据库方面还是事务机制、隔离级别比较重要当然了数据库索引是必考的问题。偶尔也会给你几个表让你现场写 SQL 语句主要考察 group by 和 having 等关键字。 八MVC 框架相关知识点 我在项目中使用的框架有 Spring MVC 和 MyBatis所以在简历上只写了这两种框架面试官主要针对这两种框架进行提问。以下问题供小伙伴们参考。 JavaWeb 开发经典的 3 层框架Web 层、Service 层业务逻辑层和 Dao 层数据访问层 Web 层包含 JSP 和 Servlet 等与 Web 相关的内容业务层只关心业务逻辑数据层封装了对数据库的访问细节。Spring 知识点 1Spring 的 IOC 和 AOP 有了解吗 答 IOC控制反转解耦合将对象间的依赖关系交给 Spring 容器使用配置文件来创建所依赖的对象由主动创建对象改为了被动方式AOP面向切面编程将功能代码从业务逻辑代码中分离出来。2AOP 的实现方式有哪几种如何选择必考 答JDK 动态代理实现和 cglib 实现。 选择 如果目标对象实现了接口默认情况下会采用 JDK 的动态代理实现 AOP也可以强制使用 cglib 实现 AOP如果目标对象没有实现接口必须采用 cglib 库Spring 会自动在 JDK 动态代理和 cglib 之间转换。扩展JDK 动态代理如何实现加分点 答JDK 动态代理只能对实现了接口的类生成代理而不是针对类该目标类型实现的接口都将被代理。原理是通过在运行期间创建一个接口的实现类来完成对目标对象的代理。 定义一个实现接口 InvocationHandler 的类通过构造函数注入被代理类实现 invoke Object proxy, Method method, Object[] args方法在主函数中获得被代理类的类加载器使用 Proxy.newProxyInstance( ) 产生一个代理对象通过代理对象调用各种方法。解析关于 IOC 和 AOP 的详细阐述请各位参阅我的博客Spring 核心 AOP面向切面编程总结Spring 框架学习—控制反转IOC 3Spring MVC 的核心控制器是什么消息处理流程有哪些 答核心控制器为 DispatcherServlet。消息流程如下 4其他问题包括重定向和转发的区别、动态代理和静态代理的区别等。 Mybatis 知识点 关于 MyBatis 主要考察占位符#和 $ 的区别区别如下 符号将传入的数据都当做一个字符串会对自动传入的数据加一个双引号$ 符号将传入的数据直接显示生成 SQL 中符号存在预编译的过程对问号赋值防止 SQL 注入$ 符号是直译的方式一般用在 order by ${列名}语句中能用#号就不要用 $ 符号。小结限于作者水平MVC 框架方面了解不是太多实战能力欠缺。面试官偶尔问框架底层实现原理等都知之甚少有能力的小伙伴可以多加学习。 九大数据相关知识点 大数据相关是因为我的简历上写了 KafKa 相关项目所以面试官会进行提问 KafKa 相关知识点我也进行了一些简单概念总结深层次的实现原理因为并没有特别多的实战经验所以并不了解。 以下概念总结供小伙伴参考。 1KafKa 基本特性 答快速持久化、支持批量读写消息、支持消息分区提高了并发能力、支持在线增加分区、支持为每个分区创建多个副本。 扩展为什么可以实现快速持久化 答KafKa 将消息保存在磁盘中并且读写磁盘的方式是顺序读写避免了随机读写磁盘寻道时间过长导致的性能瓶颈磁盘的顺序读写速度超过内存随机读写。 2核心概念 答 生产者Producer 生产消息并且按照一定的规则推送到 Topic 的分区中。消费者Consumer 从 Topic 中拉去消息并且进行消费。主题Topic 用于存储消息的逻辑概念是一个消息集合。分区partition每个 Topic 可以划分为多个分区每个消息在分区中都会有一个唯一编号 offsetkafka 通过 offset 保证消息在分区中的顺序同一 Topic 的不同分区可以分配在不同的 Broker 上partition 以文件的形式存储在文件系统中。副本replica KafKa 对消息进行了冗余备份每个分区有多个副本每个副本中包含的消息是 “一样” 的。每个副本中都会选举出一个 Leader 副本其余为 Follower 副本Follower 副本仅仅将数据从 Leader 副本拉去到本地然后同步到自己的 Log 中。消费者组Consumer Group 每个 consumer 都属于一个 consumer group每条消息只能被 consumer group 中的一个 Consumer 消费但可以被多个 consumer group 消费。 Broker 一个单独的 server 就是一个 Broker主要工作接收生产者发过来的消息分配 offset并且保存到磁盘中ClusterController 多个 Broker 可以组成一个 Cluster每个集群选举一个 Broker 来作为 Controller充当指挥中心Controller 负责管理分区的状态管理每个分区的副本状态监听 ZooKeeper 中数据的变化等工作保留策略和日志压缩 不管消费者是否已经消费了消息KafKa 都会一直保存这些消息持久化到磁盘通过保留策略定时删除陈旧的消息日志压缩只保留最新的 Key-Value 对。关于副本机制加分点 ISR 集合 表示当前 “可用” 且消息量与 Leader 相差不多的副本集合。满足条件如下 副本所在节点必须维持着与 ZooKeeper 的连接副本最后一条信息的 offset 与 Leader 副本的最后一条消息的 offset 之间的差值不能超过指定的阈值。HWLEO HW 标记了一个特殊的 offset当消费者处理消息的时候只能拉取到 HW 之前的消息HW 也是由 Leader 副本管理的LEOLog End Offset是所有副本都会有的一个 offset 标记。ISR、HW 和 LEO 的工作配合 producer 向此分区中推送消息Leader 副本将消息追加到 Log 中并且递增其 LEOFollower 副本从 Leader 副本中拉取消息进行同步Follower 副本将消息更新到本地 Log 中并且递增其 LEO当 ISR 集合中的所有副本都完成了对 offset 的消息同步Leader 副本会递增其 HWKafKa 的容灾机制 通过分区的副本 Leader 副本和 Follower 副本来提高容灾能力。 小结请小伙伴根据自己的简历自行准备学习大数据相关知识点。 十Linux 常见命令 作者对这一方面不是很精通知识点来源于网络总结以及面试官的提问仅供小伙伴参考。 1grep、sed 以及 awk 命令 解析awk 命令如果可以掌握是面试中的一个 加分点。 2文件和目录 pwd 显示当前目录 ls 显示当前目录下的文件和目录 ls -F 可以区分文件和目录ls -a 可以把隐藏文件和普通文件一起显示出来ls -R 可以递归显示子目录中的文件和目录ls -l 显示长列表ls -l test 过滤器查看某个特定文件信息。可以只查看 test 文件的信息。3处理文件方面的命令有touch、cp、 In、mv、rm、 4处理目录方面的命令mkdir 5查看文件内容file、cat、more、less、tail、head 6监测程序命令ps、top eg. 找出进程名中包括 java 的所有进程ps -ef | grep java top 命令 实时监测进程 top 命令输出的第一部分显示系统的概括。 第一行显示了当前时间、系统的运行时间、登录的用户数和系统的平均负载平均负载有 3 个值最近 1min 5min 15min第二行显示了进程的概要信息有多少进程处于运行、休眠、停止或者僵化状态第三行是 CPU 的概要信息第四行是系统内存的状态。7ps 和 top 命令的区别 ps 看到的是命令执行瞬间的进程信息 , 而 top 可以持续的监视ps 只是查看进程 , 而 top 还可以监视系统性能 , 如平均负载 ,cpu 和内存的消耗另外 top 还可以操作进程 , 如改变优先级 (命令 r) 和关闭进程 (命令 k)ps 主要是查看进程的关注点在于查看需要查看的进程top 主要看 cpu, 内存使用情况及占用资源最多的进程由高到低排序关注点在于资源占用情况。8 压缩数据 tar -xvf 文件名tar -zxvf 文件名tar -cvzf 文件名。9结束进程kill PID 或者 kill all 至此从十个不同的方面阐述了 Java 开发面试岗位中所涉及到的重要知识点。加上我上次发布的 关于算法面试的 chat我大概将最近一年的时间内的面试笔试经验给大家做了总结分享。 接下来为了给大家提供更多的帮助我想针对简历方面和大家聊聊主要包括 制作简历和投递简历两方面。 制作简历 首先我想先介绍下我的简历都包括哪些部分 个人信息教育背景个人亮点实习项目校内项目奖励、语言及 IT 能力个人综述简历应该突出表现自己优秀的地方所以我将个人技术博客和 github 地址放到了相对靠前的位置使面试官或者 HR 可以一眼看到。 各位小伙伴如果在校期间参加过什么大型竞赛并且获奖也可以写在明显的位置。 给大家一个小提示那就是必须对简历上所写的知识点有一定了解不懂的就不要写上去了因为你会被问的很惨即使一面面试官不问三面面试官也会问的。 比如说你在简历上写了一个技术 A说自己在项目中使用过技术 A那么面试官就会问该技术 A 的底层实现、原理等等。 如果你回答出来确实这是加分项但是很多时候我们是回答不出来的。 投递简历 投递简历同样很重要对于并不是出身名校的小伙伴来说在投递一些互联网公司的时候可能会面临着简历被刷的可能。这时候内推的重要性就体现出来了。 内推是内部推荐的意思 内推的好处一般有两种 内推免简历筛选直接进入笔试环节内推可以直接获得面试资格面试失败可以继续参加后续校招大流程。内推时间点 暑期实习校园招聘的内推一般从每年 3 月份开始秋招的内推从每年 8 月份开始持续到九月份。如何内推 内推意味着你要找到公司内部人员进行推荐内推渠道主要是找自己的师兄师姐。另外可以时常关注号称 “全国最大的高校论坛”- 北邮人论坛 。 北邮人论坛资源相当丰富每年招聘季的内推帖子数不胜数各位如果有需要可以关注一下。在牛客网以及赛码网的讨论区内也存在着大量的内推消息大家可以关注。转载于:https://www.cnblogs.com/gm123/p/10998932.html
http://www.zqtcl.cn/news/490367/

相关文章:

  • 个体工商户可以做网站备案吗微信app下载安装官方版2023
  • 内贸在什么网站做做网站需要提供哪些信息
  • 物流网站怎么做推广网页程序开发语言
  • 静态网站跟动态网站开发的层次
  • 公司购买网站怎么做分录被k掉的网站怎么做才能有收录
  • 网页制作相关网站网络卖货平台有哪些
  • 国内网站都要备案吗快速做网站的软件
  • 遂宁市住房和城乡建设局网站自己的网站怎么做美工
  • 资阳网站建设公司中国菲律宾概念股
  • 网站优化报价wordpress 获取别名
  • 自适应网站如何做mip微信网站公司
  • 网站建设改版升级wordpress 艺术家
  • 百度怎么网站排名python做网站的开发
  • 淘宝 网站建设教程视频北京华夏建设有限公司网站
  • 网站公司的利润中国域名后缀
  • 梁山网站建设电话多语言网站建设
  • 网站建设的摘要做直播网站赚钱吗
  • 网站建设明细报价表模板永久免费云服务器无需注册
  • 扁平化网站设计方案大学生做的美食网站
  • wordpress前台打开速度20秒湖南正规竞价优化公司
  • 深度网营销型网站建设wordpress keywords
  • 企业官网快速建站框架物流网站源代码
  • 网站图片设置隐私保护怎么下载搭建购物网站
  • 网站运营和推广可以做mv 的视频网站
  • 成都网站建设冠辰成都关键词优化技术
  • 用什么框架做网站快哪个网站可以自己做名片
  • 免费网站建设ppt模板下载网站设计与程序专业
  • o2o网站设计方案高端定制网站开发设计建站流程
  • 杭州建设公司网站石家庄做网站比较好的公司
  • 英文网站支付怎么做产品做推广都有那些网站