JAVA面试知识点1

1.1、Java基础 

  • 面向对象的特征:继承、封装和多态

  • 可参考这一篇文章:https://blog.csdn.net/ztj111/article/details/1854611 

  • final, finally, finalize 的区别

  • 1、final修饰符(关键字)。被final修饰的类,就意味着不能再派生出新的子类,不能作为父类而被子类继承。因此一个类不能既被abstract声明,又被final声明。将变量或方法声明为final,可以保证他们在使用的过程中不被修改。被声明为final的变量必须在声明时给出变量的初始值,而在以后的引用中只能读取。被final声明的方法也同样只能使用,不能重载。

  • 2、finally是在异常处理时提供finally块来执行任何清除操作。不管有没有异常被抛出、捕获,finally块都会被执行。try块中的内容是在无异常时执行到结束。catch块中的内容,是在try块内容发生catch所声明的异常时,跳转到catch块中执行。finally块则是无论异常是否发生,都会执行finally块的内容,所以在代码逻辑中有需要无论发生什么都必须执行的代码,就可以放在finally块中。

  • 3、finalize是方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者被执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

  • Exception、Error、运行时异常与一般异常有何异同

  • 1、Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继续执行,因此,这是不可捕捉到的,无法采取任何恢复的操作,顶多只能显示错误信息。Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出).假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的.

  • 2、Java提供了两类主要的异常:runtime exceptionchecked exceptionchecked 异常也就是我们经常遇到的IO异常,以及SQL异常都是这种异常。对于这种异常,JAVA编译器强制要求我们必需对出现的这些异常进行catch。所以,面对这种异常不管我们是否愿意,只能自己去写一大堆catch块去处理可能的异常。这类异常一般是外部错误,例如试图从文件尾后读取数据等,这并不是程序本身的错误,而是在应用环境中出现的外部错误.但是另外一种异常:runtime exception,也称运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机接管。

  • 请写出5种常见到的runtime exception

  • 常见的RuntimeException(运行时异常): 
    IndexOutOfBoundsException(下标越界异常) 
    NullPointerException(空指针异常) 
    NumberFormatException (String转换为指定的数字类型异常) 
    ArithmeticException -(算术运算异常 如除数为0) 
    ArrayStoreException - (向数组中存放与声明类型不兼容对象异常) 
    SecurityException -(安全异常) 
    IOException(其他异常) 
    FileNotFoundException(文件未找到异常。) 
    IOException(操作输入流和输出流时可能出现的异常。) 
    EOFException (文件已结束异常)

  • int 和 Integer 有什么区别,Integer的值缓存范围

  • Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。integer缓存范围为-128-127。

    1. Integer i4 = 127;//编译时被翻译成:Integer i4 = Integer.valueOf(127);

    2. Integer i5 = 127;

    3. System.out.println(i4 == i5);//true

    4. Integer i6 = 128;

    5. Integer i7 = 128;

    6. System.out.println(i6 == i7);//false

  • 包装类,装箱和拆箱

  • 我们都知道,Java中有一个系统类型由两部分组成,包含基本类型(primitive),例如int、float、double等,和引用类型(reference type),如String和List。而基本数据类型是不具备对象特征的,每个基本类型都有一个对应的引用类型,称作是装箱基本类型(boxed primitive)包装类。而基本类与包装类的关系如下表:

    这里写图片描述

    包装类主要提供了两大类方法: 
    1. 将本类型和其他基本类型进行转换的方法 
    2. 将字符串和本类型及包装类互相转换的方法

    以Integer为例(其他包装类类似)说明这两种转换:

    Integer的常用方法

    而自从JDK1.5以后Java中引入了自动拆箱装箱的机制,包装类和基本类型之间的转换就更加轻松便利了。

    装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

    拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

    这里写图片描述

    这里写图片描述

    实际上基本类型和装箱基本类型之间还有很大的区别的,这些区别容易导致一些麻烦

  • String、StringBuilder、StringBuffer

  • 重载和重写的区别

  • override(重写)

       1、方法名、参数、返回值相同。

       2、子类方法不能缩小父类方法的访问权限。

       3、子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)。

       4、存在于父类和子类之间。

       5、方法被定义为final不能被重写。

     overload(重载)

      1、参数类型、个数、顺序至少有一个不相同。 

      2、不能重载只有返回值不同的方法名。

      3、存在于父类和子类、同类中。

  • 抽象类和接口有什么区别

  • 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板

  • 接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情

1 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。

2 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

3接口里只能包含抽象方法,静态方法和默认方法,不能为普通方法提供方法实现,抽象类则完全可以包含普通方法。

4 接口里只能定义静态常量,不能定义普通成员变量,抽象类里则既可以定义普通成员变量,也可以定义静态常量。

5 接口不能包含构造器,抽象类可以包含构造器,抽象类里的构造器并不是用于创建对象,而是让其子类调用这些构造器来完成属于抽象类的初始化操作。

6 接口里不能包含初始化块,但抽象类里完全可以包含初始化块。

7一个类最多只能有一个直接父类,包括抽象类,但一个类可以直接实现多个接口,通过实现多个接口可以弥补Java单继承不足。

  • 说说反射的用途及实现

  • Java反射机制主要提供了以下功能:在运行时构造一个类的对象;判断一个类所具有的成员变量和方法;调用一个对象的方法;生成动态代理。反射最大的应用就是框架

    •     确定一个对象的类
    •     取出类的modifiers,数据成员,方法,构造器,和超类.
    •     找出某个接口里定义的常量和方法说明.
    •     创建一个类实例,这个实例在运行时刻才有名字(运行时间才生成的对象).
    •     取得和设定对象数据成员的值,如果数据成员名是运行时刻确定的也能做到.
    •     在运行时刻调用动态对象的方法.
    •     创建数组,数组大小和类型在运行时刻才确定,也能更改数组成员的值.
    • 参考:https://blog.csdn.net/cbjcry/article/details/70154810
  • 说说自定义注解的场景及实现

  • 类属性自动赋值。
  • 验证对象属性完整性。
  • 代替配置文件功能,像spring基于注解的配置。
  • 可以生成文档,像java代码注释中的@see,@param等
  • 参考https://blog.csdn.net/bluuusea/article/details/79996572
  • HTTP请求的GET与POST方式的区别

  • Session与Cookie区别

  • 安全,位置,效率,机制

  • https://blog.csdn.net/weixin_37196194/article/details/55806366

  • 列出自己常用的JDK包

  • java.lang/io/util/math/text/sql/nio/awt

  • MVC设计思想

  • mvc(model view controller)
        mvc是一种软件架构的思想,将一个软件按照模型、视图、控制器进行划分。其中,模型用来封装业务逻辑,视图用来实现表示逻辑,控制器用来协调模型与视图(视图要通过控制器来调用模型,模型返回的处理结果也要先交给控制器,由控制器来选择合适的视图来显示 处理结果)。
            1)模型: 业务逻辑包含了业务数据的加工与处理以及相应的基础服务(为了保证业务逻辑能够正常进行的事务、安全、权限、日志等等的功能模块)
            2)视图:展现模型处理的结果;另外,还要提供相应的操作界面,方便用户使用。

            3)控制器:视图发请求给控制器,由控制器来选择相应的模型来处理;模型返回的结果给控制器,由控制器选择合适的视图

  • 参考:https://blog.csdn.net/daijin888888/article/details/51169156

  • equals与==的区别

  • “==”比较的是值【变量(栈)内存中存放的对象的(堆)内存地址】 
    equal用于比较两个对象的值是否相同【不是比地址】 

    【特别注意】Object类中的equals方法和“==”是一样的,没有区别,而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“==不同”,所以,当自己创建类时,自动继承了Object的equals方法,要想实现不同的等于比较,必须重写equals方法。

    "=="比"equal"运行速度快,因为"=="只是比较引用.

  • hashCode和equals方法的区别与联系

  • 参考:https://blog.csdn.net/suyebiubiu/article/details/78781141

  • 什么是Java序列化和反序列化,如何实现Java序列化?或者请解释Serializable 接口的作用

  • Object类中常见的方法,为什么wait  notify会放在Object里边?

1、toString(),equals(),hashCode()

https://blog.csdn.net/tomcmd/article/details/54895935

2、因为synchronized中的这把锁可以是任意对象,所以任意对象都可以调用wait()和notify();所以wait和notify属于Object。

1.2、Java常见集合

1.3、进程和线程

  • 线程和进程的概念、并行和并发的概念

  • 进程就是一段程序的执行过程,线程:通常一个进程会包含多个线程,作为独立运行和独立调度的基本单位。

  • 并行:在多核cpu中,可以让两个以上的进程同时运行在不同的物理核心上,这种运行的方式就是并行。

  • 并发:在单核cpu中,多个进程,一般通过时间片轮巡为主,通过不断切换需要运行的进程让其运行的方式叫做并发。

  • 创建线程的方式及实现

  • 继承Thread类,调用start()方法,启动一个线程。实现runnable接口,调用start()方法,启动一个线程。

  • 比较参考:https://www.cnblogs.com/muzeet/p/4338973.html

  • 进程间通信的方式

  • 管道,消息队列,信号量,共享存储,Socket等。参考:https://blog.csdn.net/wh_sjc/article/details/70283843

  • 说说 CountDownLatch、CyclicBarrier 原理和区别

  • 减数技术(只有一个构造方法用于指明计数数量,然后就是await用于线程等待,countDown用于将计数器减1.)和循环栅栏比较(很好理解,大家约定好一起到XX地址汇合,所有人都到了以后再一起去吃饭。) : 参考:https://blog.csdn.net/tianyaleixiaowu/article/details/75234600

  • 说说 Semaphore 原理

  • 信号量:Semaphore是计数信号量,经常用于限制获取某种资源的线程数量

  • 参考:https://blog.csdn.net/qq_19431333/article/details/70212663

  • 说说 Exchanger 原理

  •  Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一直等待第二个线程也执行exchange,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方。因此使用Exchanger的重点是成对的线程使用exchange()方法,当有一对线程达到了同步点,就会进行交换数据。因此该工具类的线程对象是成对的。

  • 参考:https://blog.csdn.net/carson0408/article/details/79477280

  • ThreadLocal 原理分析,ThreadLocal为什么会出现OOM,出现的深层次原理

  • 参考:https://blog.csdn.net/xlgen157387/article/details/78298840

  • 讲讲线程池的实现原理

  • 线程池,就是帮我们重复管理线程,避免创建大量的线程增加开销。

  • 线程池的几种实现方式

  • 参考:https://blog.csdn.net/mine_song/article/details/70948223

  • 线程的生命周期,状态是如何转移的

  • 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换

    1. 新建状态,当程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的值

    2. 就绪状态,当线程对象调用了start()方法之后,该线程处于就绪状态。Java虚拟机会为其创建方法调用栈和程序计数器,等待调度运行

    3. 运行状态,如果处于就绪状态的线程获得了CPU,开始执行run()方法的线程执行体,则该线程处于运行状态

    4. 阻塞状态,当处于运行状态的线程失去所占用资源之后,便进入阻塞状态

    5. 在线程的生命周期当中,线程的各种状态的转换过程

  • 参考:https://www.cnblogs.com/sunddenly/p/4106562.html

     

  • 可参考:《Java多线程编程核心技术

1.4、锁机制

  • 说说线程安全问题,什么是线程安全,如何保证线程安全

  • 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

  • 通过使用线程安全的类,或者使用synchronized同步代码块

  • 重入锁的概念,重入锁为什么可以防止死锁

  • 重入锁就是以线程为单位。当一个线程获取对象锁之后,这个线程以再次获取本对象上的锁。而其他线程是不可以获取的。

  • 为什么可以防止死锁:通过为每个锁关联一个请求计数和一个占有它的线程。

  • 参考:https://blog.csdn.net/joker_apple/article/details/52790181

  • https://blog.csdn.net/u012545728/article/details/80843595 可重入锁和不可重入锁

  • 产生死锁的四个条件(互斥、请求与保持、不剥夺、循环等待)

  •  1、互斥:某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。
        2、占有且等待:一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。
        3、不可抢占:别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。
        4、循环等待:存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源。
           当以上四个条件均满足,必然会造成死锁,发生死锁的进程无法进行下去,它们所持有的资源也无法释放。这样会导致CPU的吞吐量下降。所以死锁情况是会浪费系统资源和影响计算机的使用性能的。那么,解决死锁问题就是相当有必要的了。
    参考:https://blog.csdn.net/guaiguaihenguai/article/details/80303835

  • 如何检查死锁(通过jConsole检查死锁)

  • Jconsole,Jstack

  • volatile 实现原理(禁止指令重排、刷新内存)

  • 参考:http://www.cnblogs.com/xrq730/p/7048693.html

  • synchronized 实现原理(对象监视器)

  • 参考:https://blog.csdn.net/javazejian/article/details/72828483

  • synchronized 与 lock 的区别

  • 参考:https://blog.csdn.net/u012403290/article/details/64910926?locationNum=11&fps=1

  • AQS同步队列

  • CAS无锁的概念、乐观锁和悲观锁

  • 常见的原子操作类

  • 什么是ABA问题,出现ABA问题JDK是如何解决的

  • 乐观锁的业务场景及实现方式

  • Java 8并法包下常见的并发类

  • 偏向锁、轻量级锁、重量级锁、自旋锁的概念

  • 可参考:《Java多线程编程核心技术

1.5、JVM

  • JVM运行时内存区域划分

  • 内存溢出OOM和堆栈溢出SOE的示例及原因、如何排查与解决

  • 如何判断对象是否可以回收或存活

  • 常见的GC回收算法及其含义

  • 常见的JVM性能监控和故障处理工具类:jps、jstat、jmap、jinfo、jconsole等

  • JVM如何设置参数

  • JVM性能调优

  • 类加载器、双亲委派模型、一个类的生命周期、类是如何加载到JVM中的

  • 类加载的过程:加载、验证、准备、解析、初始化

  • 强引用、软引用、弱引用、虚引用

  • Java内存模型JMM

1.6、设计模式

  • 常见的设计模式

  • 单例模式,代理模式,工厂模式,装饰者模式,简单工厂模式。

  • 设计模式的的六大原则及其含义

  • 单一职责原则,开闭原则,里式代换原则,依赖倒转原则,合成/聚合复用原则,迪米特原则

  • 参考:https://blog.csdn.net/qiqibei666/article/details/81187305

  • 常见的单例模式以及各种实现方式的优缺点,哪一种最好,手写常见的单利模式

  • 饱汉式,饿汉式,双重锁式。根据不同的业务要求选取最合适的方式。

  • 设计模式在实际场景中的应用

  • 单例模式,可以用来设计在线人数等方案

  • Spring中用到了哪些设计模式

  • 用到了单例模式,代理模式,工厂模式等等

  • 参考:https://www.cnblogs.com/yuefan/p/3763898.html

  • MyBatis中用到了哪些设计模式

  • 装饰者模式,责任链模式,适配器模式,动态代理模式,

  • 参考:https://yq.aliyun.com/ziliao/284567

  • 你项目中有使用哪些设计模式

  • 代理,责任链,单例

  • 说说常用开源框架中设计模式使用分析

  • 动态代理很重要!!!

1.7、数据结构

  • 树(二叉查找树、平衡二叉树、红黑树、B树、B+树)

  • 深度有限算法、广度优先算法

  • 克鲁斯卡尔算法、普林母算法、迪克拉斯算法

  • 什么是一致性Hash及其原理、Hash环问题

  • 常见的排序算法和查找算法:快排、折半查找、堆排序等

1.8、网络/IO基础

  • BIO、NIO、AIO的概念

  • 什么是长连接和短连接

  • Http1.0和2.0相比有什么区别,可参考《Http 2.0

  • Https的基本概念

  • 三次握手和四次挥手、为什么挥手需要四次

  • 从游览器中输入URL到页面加载的发生了什么?可参考《从输入URL到页面加载发生了什么

二、数据存储和消息队列

2.1、数据库

  • MySQL 索引使用的注意事项

  • DDL、DML、DCL分别指什么

  • explain命令

  • left join,right join,inner join

  • 数据库事物ACID(原子性、一致性、隔离性、持久性)

  • 事物的隔离级别(读未提交、读以提交、可重复读、可序列化读)

  • 脏读、幻读、不可重复读

  • 数据库的几大范式

  • 数据库常见的命令

  • 说说分库与分表设计

  • 分库与分表带来的分布式困境与应对之策(如何解决分布式下的分库分表,全局表?)

  • 说说 SQL 优化之道

  • MySQL遇到的死锁问题、如何排查与解决

  • 存储引擎的 InnoDB与MyISAM区别,优缺点,使用场景

  • 索引类别(B+树索引、全文索引、哈希索引)、索引的原理

  • 什么是自适应哈希索引(AHI)

  • 为什么要用 B+tree作为MySQL索引的数据结构

  • 聚集索引与非聚集索引的区别

  • 遇到过索引失效的情况没,什么时候可能会出现,如何解决

  • limit 20000 加载很慢怎么解决

  • 如何选择合适的分布式主键方案

  • 选择合适的数据存储方案

  • 常见的几种分布式ID的设计方案

  • 常见的数据库优化方案,在你的项目中数据库如何进行优化的

2.2、Redis

2.3、消息队列

  • 消息队列的使用场景

  • 消息的重发补偿解决思路

  • 消息的幂等性解决思路

  • 消息的堆积解决思路

  • 自己如何实现消息队列

  • 如何保证消息的有序性

三、开源框架和容器

3.1、SSM/Servlet

  • Servlet的生命周期

  • 转发与重定向的区别

  • BeanFactory 和 ApplicationContext 有什么区别

  • Spring Bean 的生命周期

  • Spring IOC 如何实现

  • Spring中Bean的作用域,默认的是哪一个

  • 说说 Spring AOP、Spring AOP 实现原理

  • 动态代理(CGLib 与 JDK)、优缺点、性能对比、如何选择

  • Spring 事务实现方式、事务的传播机制、默认的事务类别

  • Spring 事务底层原理

  • Spring事务失效(事务嵌套),JDK动态代理给Spring事务埋下的坑,可参考《JDK动态代理给Spring事务埋下的坑!

  • 如何自定义注解实现功能

  • Spring MVC 运行流程

  • Spring MVC 启动流程

  • Spring 的单例实现原理

  • Spring 框架中用到了哪些设计模式

  • Spring 其他产品(Srping Boot、Spring Cloud、Spring Secuirity、Spring Data、Spring AMQP 等)

  • 有没有用到Spring Boot,Spring Boot的认识、原理

  • MyBatis的原理

3.2、Netty

  • 为什么选择 Netty

  • 说说业务中,Netty 的使用场景

  • 原生的 NIO 在 JDK 1.7 版本存在 epoll bug

  • 什么是TCP 粘包/拆包

  • TCP粘包/拆包的解决办法

  • Netty 线程模型

  • 说说 Netty 的零拷贝

  • Netty 内部执行流程

  • Netty 重连实现

  • Kafka零拷贝Zero Copy技术

3.3、Tomcat

四、分布式

4.1、Nginx

  • 请解释什么是C10K问题或者知道什么是C10K问题吗?

  • Nginx简介,可参考《Nginx简介

  • 正向代理和反向代理.

  • Nginx几种常见的负载均衡策略

  • Nginx服务器上的Master和Worker进程分别是什么

  • 使用“反向代理服务器”的优点是什么?

4.2、分布式其他

  • 谈谈业务中使用分布式的场景

  • Session 分布式方案

  • Session 分布式处理

  • 分布式锁的应用场景、分布式锁的产生原因、基本概念

  • 分布是锁的常见解决方案

  • 分布式事务的常见解决方案

  • 集群与负载均衡的算法与实现

  • 说说分库与分表设计,可参考《数据库分库分表策略的具体实现方案

  • 分库与分表带来的分布式困境与应对之策

4.3、Dubbo

  • 什么是Dubbo,可参考《Dubbo入门

  • 什么是RPC、如何实现RPC、RPC 的实现原理,可参考《基于HTTP的RPC实现

  • Dubbo中的SPI是什么概念

  • Dubbo的基本原理、执行流程

五、微服务

5.1、微服务

  • 前后端分离是如何做的?

  • 微服务哪些框架

  • Spring Could的常见组件有哪些?可参考《Spring Cloud概述

  • 领域驱动有了解吗?什么是领域驱动模型?充血模型、贫血模型

  • JWT有了解吗,什么是JWT,可参考《前后端分离利器之JWT

  • 你怎么理解 RESTful

  • 说说如何设计一个良好的 API

  • 如何理解 RESTful API 的幂等性

  • 如何保证接口的幂等性

  • 说说 CAP 定理、BASE 理论

  • 怎么考虑数据一致性问题

  • 说说最终一致性的实现方案

  • 微服务的优缺点,可参考《微服务批判

  • 微服务与 SOA 的区别

  • 如何拆分服务、水平分割、垂直分割

  • 如何应对微服务的链式调用异常

  • 如何快速追踪与定位问题

  • 如何保证微服务的安全、认证

5.2、安全问题

  • 如何防范常见的Web攻击、如何方式SQL注入

  • 服务端通信安全攻防

  • HTTPS原理剖析、降级攻击、HTTP与HTTPS的对比

5.3、性能优化

  • 性能指标有哪些

  • 如何发现性能瓶颈

  • 性能调优的常见手段

  • 说说你在项目中如何进行性能调优

六、其他

6.1、设计能力

6.2、业务工程

  • 说说你的开发流程、如何进行自动化部署的

  • 你和团队是如何沟通的

  • 你如何进行代码评审

  • 说说你对技术与业务的理解

  • 说说你在项目中遇到感觉最难Bug,是如何解决的

  • 介绍一下工作中的一个你认为最有价值的项目,以及在这个过程中的角色、解决的问题、你觉得你们项目还有哪些不足的地方

6.3、软实力

  • 说说你的优缺点、亮点

  • 说说你最近在看什么书、什么博客、在研究什么新技术、再看那些开源项目的源代码

  • 说说你觉得最有意义的技术书籍

  • 工作之余做什么事情、平时是如何学习的,怎样提升自己的能力

  • 说说个人发展方向方面的思考

  • 说说你认为的服务端开发工程师应该具备哪些能力

  • 说说你认为的架构师是什么样的,架构师主要做什么

  • 如何看待加班的问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值