你遇到过哪些质量很高的 Java 面试?

嵌入式通信协议----Wi-Fi协议详解(一) Wi-Fi,又称“无线网络”,是Wi-Fi联盟的商标,一个基于IEEE 802.11标准的无线局域网技术。“Wi-Fi”常写作“WiFi”或“Wifi”,但是这些写法并没有被Wi-Fi联盟认可。Wi-Fi产品经由Wi-Fi联盟的一家独立授权测试实验室进行严格测试,产品成功通过测试后,授予制造商或销售商使用Wi-Fi标志、Wi-Fi CERTIFIED标志和相关商标,Wi-Fi联盟使用术语“Wi-Fi CERTIFIED”来称呼这类通过认证的产品。 阅读详情

自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下:

下面为拼多多、饿了么、蚂蚁金服、哈啰出行、携程、饿了么、2345、百度等公司给我留下较深印象的一些java面试题

  1. private修饰的方法可以通过反射访问,那么private的意义是什么
  2. Java类初始化顺序
  3. 对方法区和永久区的理解以及它们之间的关系
  4. 一个java文件有3个类,编译后有几个class文件
  5. 局部变量使用前需要显式地赋值,否则编译通过不了,为什么这么设计
  6. ReadWriteLock读写之间互斥吗
  7. Semaphore拿到执行权的线程之间是否互斥
  8. 写一个你认为最好的单例模式
  9. B树和B+树是解决什么样的问题的,怎样演化过来,之间区别
  10. 写一个生产者消费者模式
  11. 写一个死锁
  12. cpu 100%怎样定位
  13. String a = "ab"; String b = "a" + "b"; a == b 是否相等,为什么
  14. int a = 1; 是原子性操作吗
  15. 可以用for循环直接删除ArrayList的特定元素吗?可能会出现什么问题?怎样解决
  16. 新的任务提交到线程池,线程池是怎样处理
  17. AQS和CAS原理
  18. synchronized底层实现原理
  19. volatile作用,指令重排相关
  20. AOP和IOC原理
  21. Spring怎样解决循环依赖的问题
  22. dispatchServlet怎样分发任务的
  23. mysql给离散度低的字段建立索引会出现什么问题,具体说下原因

其它经常问的HashMap底层实现原理,常规的多线程问题考的太多了,没什么新意就不写了

平时不能光抱着应用Java的目的去学习,要深入了解每个知识点背后底层实现原理,为什么这么设计,比如问烂的HashMap 既然有hash进行排位还需要equals()作用是什么?就这个问题照样能问倒一些人,所以一定要抠细节,真的把每个知识点搞懂

1.面试主要分为两块:一块是考查工程师对基础知识(包括了技术广度、深度、对技术的热情度等)的掌握程度,因为基础知识决定了一个技术人员发展的上限;另一块是考察工程师的工程能力,比如:做过哪些项目?遇到最难的问题怎样解决的?说说最有成就感的一项任务?工程能力是考察工程师当下能为公司带来的利益。其它考核方面:抗压性、合作能力...暂且不说。

2.Java只是一门语言,即使是Java工程师也不能局限于Java,要从面向对象语言本身,甚至从整个计算机体系,从工程实际出发看Java。

3.很多知识在一般公司的开发中是用不到的,常有人戏称:“面试造火箭,工作拧螺丝”,但这只是通常情况下公司对程序员的标准——迅速产出,完成任务。个人观点:工程师为了自己职业的发展不能局限于公司对自己的要求,不能停留在应用层面,要能够很好地掌握基础知识,要多看源码,自己多实践,学成记得产出,比如多为开源社区贡献代码,帮助初学者指路等。

有没有发现一个有意思的事情:“面试造火箭,工作拧螺丝”的背后其实是考察者内心深处普遍都认可基础知识的重要性(这一点仅为个人观点,不展开讲哈)。

--以下为解答大纲,部分作了扩展

1. 这题是一道思想题目,天天会碰到private,有没有想过这个问题?谈谈对java设计的认识程度,主要抓住两点:1.java的private修饰符并不是为了绝对安全性设计的,更多是对用户常规使用java的一种约束;2.从外部对对象进行常规调用时,能够看到清晰的类结构。

2. 先说结论: 基类静态代码块,基类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)——>派生类静态代码块,派生类静态成员字段(并列优先级,按照代码中出现的先后顺序执行,且只有第一次加载时执行)——>基类普通代码块,基类普通成员字段(并列优点级,按代码中出现先后顺序执行)——>基类构造函数——>派生类普通代码块,派生类普通成员字段(并列优点级,按代码中出现先后顺序执行)——>派生类构造函数

代码验证:

class Log {
    public static String initLog(String log) { System.out.println(log);return null; }
}

/**
 *  基类
*/

class Base {
    static { System.out.println("Base Static Block 1"); }

    private static String staticValue = Log.initLog("Base Static Fiels");

    static { System.out.println("Base Static Block 2"); }

    { System.out.println("Base Normal Block 1"); }

    private String value = Log.initLog("Base Normal Field");

    { System.out.println("Base Normal Block 2"); }

    Base() { System.out.println("Base Constructor"); }
}

/**
 *  派生类
 */
public class Derived extends Base {
    static { System.out.println("Static Block 1"); }

    private static String staticValue = Log.initLog("Static Fiels");

    static { System.out.println("Static Block 2"); }

    { System.out.println("Normal Block 1"); }

    private String value = Log.initLog("Normal Field");

    { System.out.println("Normal Block 2"); }

    Derived() { System.out.println("Derived Constructor"); }

/**
 *  主线程
 */

public static void main(String[] args) {
    Derived derived = new Derived();
}

控制台结果输出:

Base Static Block 1
Base Static Fiels
Base Static Block 2
Static Block 1
Static Fiels
Static Block 2
Base Normal Block 1
Base Normal Field
Base Normal Block 2
Base Constructor
Normal Block 1
Normal Field
Normal Block 2
Derived Constructor

第2题之前的回答欠妥,现已改正,在此非常感谢提出质疑的知友!

3. 方法区是jvm规范里要求的,永久区是Hotspot虚拟机对方法区的具体实现,前者是规范,后者是实现方式。jdk1.8作了改变。本题看看对方在思想层面对jvm的理解程度,很基础的一个题目。

4. 文件中有几个类编译后就有几个class文件。

5. 成员变量是可以不经初始化的,在类加载过程的准备阶段即可给它赋予默认值,但局部变量使用前需要显式赋予初始值,javac不是推断不出不可以这样做,而是没有这样做,对于成员变量而言,其赋值和取值访问的先后顺序具有不确定性,对于成员变量可以在一个方法调用前赋值,也可以在方法调用后进行,这是运行时发生的,编译器确定不了,交给jvm去做比较合适。而对于局部变量而言,其赋值和取值访问顺序是确定的。这样设计是一种约束,尽最大程度减少使用者犯错的可能(假使局部变量可以使用默认值,可能总会无意间忘记赋值,进而导致不可预期的情况出现)。

6. ReadWriteRock 读写锁,使用场景可分为读/读、读/写、写/写,除了读和读之间是共享的,其它都是互斥的,接着会讨论下怎样实现互斥锁和同步锁的, 想了解对方对AQS,CAS的掌握程度,技术学习的深度。

7. Semaphore拿到执行权的线程之间是否互斥,Semaphore、CountDownLatch、CyclicBarrier、Exchanger 为java并发编程的4个辅助类,面试中常问的 CountDownLatch CyclicBarrier之间的区别,面试者肯定是经常碰到的, 所以问起来意义不大,Semaphore问的相对少一些,有些知识点如果没有使用过还是会忽略,Semaphore可有多把锁,可允许多个线程同时拥有执行权,这些有执行权的线程如并发访问同一对象,会产生线程安全问题。

8. 写一个你认为最好的单例模式, 这题面试者都可能遇到过,也算是工作中最常遇到的设计模式之一,想考察面试者对经常碰到的题目的理解深度,单例一共有几种实现方式:饿汉、懒汉、静态内部类、枚举、双检锁,要是写了简单的懒汉式可能就会问:要是多线程情况下怎样保证线程安全呢,面试者可能说双检锁,那么聊聊为什么要两次校验,接着会问光是双检锁还会有什么问题,这时候基础好的面试者就会说了:对象在定义的时候加上volatile关键字,接下来会继续引申讨论下原子性和可见性、java内存模型、类的加载过程。

其实没有最好,枚举方式、静态内部类、双检锁都是可以的,就想听下对不同的单例写法认识程度,写个双检锁的方式吧:

public class Singleton {
    private Singleton() {
    }

    private volatile static Singleton instance;

    public static Singleton getInstance() {
        if (null == instance) {
            synchronized (Singleton.class) {
                if (null == instance) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }

}

9. B树和B+树,这题既问mysql索引的实现原理,也问数据结构基础,首先从二叉树说起,因为会产生退化现象,提出了平衡二叉树,再提出怎样让每一层放的节点多一些来减少遍历高度,引申出m叉树,m叉搜索树同样会有退化现象,引出m叉平衡树,也就是B树,这时候每个节点既放了key也放了value,怎样使每个节点放尽可能多的key值,以减少遍历高度呢(访问磁盘次数),可以将每个节点只放key值,将value值放在叶子结点,在叶子结点的value值增加指向相邻节点指针,这就是优化后的B+树。然后谈谈数据库索引失效的情况,为什么给离散度低的字段(如性别)建立索引是不可取的,查询数据反而更慢,如果将离散度高的字段和性别建立联合索引会怎样,有什么需要注意的?

10. 生产者消费者模式,synchronized锁住一个LinkedList,一个生产者,只要队列不满,生产后往里放,一个消费者只要队列不空,向外取,两者通过wait()和notify()进行协调,写好了会问怎样提高效率,最后会聊一聊消息队列设计精要思想及其使用。

11. 写一个死锁,觉得这个问题真的很不错,经常说的死锁四个条件,背都能背上,那写一个看看,思想为:定义两个ArrayList,将他们都加上锁A,B,线程1,2,1拿住了锁A ,请求锁B,2拿住了锁B请求锁A,在等待对方释放锁的过程中谁也不让出已获得的锁。

public class DeadLock {
    public static void main(String[] args) {
        final List<Integer> list1 = Arrays.asList(1, 2, 3);
        final List<Integer> list2 = Arrays.asList(4, 5, 6);
        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (list1) {
                    for (Integer i : list1) {
                        System.out.println(i);
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (list2) {
                        for (Integer i : list2) {
                            System.out.println(i);
                        }
                    }
                }
            }
        }).start();

        new Thread(new Runnable() {
            @Override
            public void run() {
                synchronized (list2) {
                    for (Integer i : list2) {
                        System.out.println(i);
                    }
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    synchronized (list1) {
                        for (Integer i : list1) {
                            System.out.println(i);
                        }
                    }
                }
            }
        }).start();

    }
}

12. cpu 100%怎样定位,这题是一个应用性题目,网上搜一下即可,比较常见,说实话,把这题放进来有点后悔。

13. String a = "ab"; String b = "a" + "b"; a ,b 是相等的(各位要写代码验证一下,我看到有人写了错误答案)。常规的问法是new一个对象赋给变量,问:这行表达式创建了几个对象,但这样的题目太常见。

14. int a = 1; 是原子性操作。

15. for循环直接删除ArrayList中的特定元素是错的,不同的for循环会发生不同的错误,泛型for会抛出 ConcurrentModificationException,普通的for想要删除集合中重复且连续的元素,只能删除第一个。

错误原因:打开JDK的ArrayList源码,看下ArrayList中的remove方法(注意ArrayList中的remove有两个同名方法,只是入参不同,这里看的是入参为Object的remove方法)是怎么实现的,一般情况下程序的执行路径会走到else路径下最终调用faseRemove方法,会执行System.arraycopy方法,导致删除元素时涉及到数组元素的移动。针对普通for循环的错误写法,在遍历第一个字符串b时因为符合删除条件,所以将该元素从数组中删除,并且将后一个元素移动(也就是第二个字符串b)至当前位置,导致下一次循环遍历时后一个字符串b并没有遍历到,所以无法删除。针对这种情况可以倒序删除的方式来避免

解决方案:用 Iterator。

 List<String> list = new  ArrayList(Arrays.asList("a", "b",  "b" , "c", "d"));
 Iterator<String> iterator = list.iterator();
       while(iterator.hasNext()) {
           String element = iterator.next();
           if(element.equals("b")) {
               iterator.remove();
           }

将本问题扩展一下,下面的代码可能会出现什么问题?

ArrayList<String> array = new ArrayList<String>();
array.add(1,"hello world");

--2019.2.7更新(写了16 - 23题解答大纲)

16. 第一步 :线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则执行第二步。

第二步 :线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里进行等待。如果工作队列满了,则执行第三步。

第三步 :线程池判断线程池的线程是否都处于工作状态。如果没有,则创建一个新的工作线程来执行任务。如果已经满了,则交给饱和策略来处理这个任务。

17. 抽象队列同步器AQS(AbstractQueuedSychronizer),如果说java.util.concurrent的基础是CAS的话,那么AQS就是整个Java并发包的核心了,ReentrantLock、CountDownLatch、Semaphore等都用到了它。AQS实际上以双向队列的形式连接所有的Entry,比方说ReentrantLock,所有等待的线程都被放在一个Entry中并连成双向队列,前面一个线程使用ReentrantLock好了,则双向队列实际上的第一个Entry开始运行。AQS定义了对双向队列所有的操作,而只开放了tryLock和tryRelease方法给开发者使用,开发者可以根据自己的实现重写tryLock和tryRelease方法,以实现自己的并发功能。

比较并替换CAS(Compare and Swap),假设有三个操作数:内存值V、旧的预期值A、要修改的值B,当且仅当预期值A和内存值V相同时,才会将内存值修改为B并返回true,否则什么都不做并返回false,整个比较并替换的操作是一个原子操作。CAS一定要volatile变量配合,这样才能保证每次拿到的变量是主内存中最新的相应值,否则旧的预期值A对某条线程来说,永远是一个不会变的值A,只要某次CAS操作失败,下面永远都不可能成功。

CAS虽然比较高效的解决了原子操作问题,但仍存在三大问题。

  • 循环时间长开销很大。
  • 只能保证一个共享变量的原子操作。
  • ABA问题。

18. synchronized (this)原理:涉及两条指令:monitorenter,monitorexit;再说同步方法,从同步方法反编译的结果来看,方法的同步并没有通过指令monitorenter和monitorexit来实现,相对于普通方法,其常量池中多了ACC_SYNCHRONIZED标示符。

JVM就是根据该标示符来实现方法的同步的:当方法被调用时,调用指令将会检查方法的 ACC_SYNCHRONIZED 访问标志是否被设置,如果设置了,执行线程将先获取monitor,获取成功之后才能执行方法体,方法执行完后再释放monitor。在方法执行期间,其他任何线程都无法再获得同一个monitor对象。

这个问题会接着追问:java对象头信息,偏向锁,轻量锁,重量级锁及其他们相互间转化。

19. 理解volatile关键字的作用的前提是要理解Java内存模型,volatile关键字的作用主要有两点:

  • 多线程主要围绕可见性和原子性两个特性而展开,使用volatile关键字修饰的变量,保证了其在多线程之间的可见性,即每次读取到volatile变量,一定是最新的数据
  • 代码底层执行不像我们看到的高级语言—-Java程序这么简单,它的执行是Java代码–>字节码–>根据字节码执行对应的C/C++代码–>C/C++代码被编译成汇编语言–>和硬件电路交互,现实中,为了获取更好的性能JVM可能会对指令进行重排序,多线程下可能会出现一些意想不到的问题。使用volatile则会对禁止语义重排序,当然这也一定程度上降低了代码执行效率

从实践角度而言,volatile的一个重要作用就是和CAS结合,保证了原子性,详细的可以参见java.util.concurrent.atomic包下的类,比如AtomicInteger。

20. AOP 和 IOC是Spring精华部分,AOP可以看做是对OOP的补充,对代码进行横向的扩展,通过代理模式实现,代理模式有静态代理,动态代理,Spring利用的是动态代理,在程序运行过程中将增强代码织入原代码中。IOC是控制反转,将对象的控制权交给Spring框架,用户需要使用对象无需创建,直接使用即可。AOP和IOC最可贵的是它们的思想。

21. 什么是循环依赖,怎样检测出循环依赖,Spring循环依赖有几种方式,使用基于setter属性的循环依赖为什么不会出现问题,接下来会问:Bean的生命周期。

22. 上一张图,从这张图去理解

具体流程:

1). 用户发请求-->DispatcherServlet,前端控制器收到请求后自己不进行处理,而是委托给其他的解析器进行处理,作为统一访问点,进行全局的流程控制。

2).DispatcherServlet-->HandlerMapping,HandlerMapping将会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器,多个HandlerInterceptor拦截器)。

3).DispatcherServlet-->HandlerAdapter,HandlerAdapter将会把处理器包装为适配器,从而支持多种类型的处理器。

4).HandlerAdapter-->处理器功能处理方法的调用,HandlerAdapter将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理,并返回一个ModelAndView对象(包含模型数据,逻辑视图名)

5).ModelAndView的逻辑视图名-->ViewResolver,ViewResoler将把逻辑视图名解析为具体的View。

6).View-->渲染,View会根据传进来的Model模型数据进行渲染,此处的Model实际是一个Map数据结构

7).返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户。

23. 先上结论:重复性较强的字段,不适合添加索引。mysql给离散度低的字段,比如性别设置索引,再以性别作为条件进行查询反而会更慢。

一个表可能会涉及两个数据结构(文件),一个是表本身,存放表中的数据,另一个是索引。索引是什么?它就是把一个或几个字段(组合索引)按规律排列起来,再附上该字段所在行数据的物理地址(位于表中)。比如我们有个字段是年龄,如果要选取某个年龄段的所有行,那么一般情况下可能需要进行一次全表扫描。但如果以这个年龄段建个索引,那么索引中会按年龄值根据特定数据结构建一个排列,这样在索引中就能迅速定位,不需要进行全表扫描。为什么性别不适合建索引呢?因为访问索引需要付出额外的IO开销,从索引中拿到的只是地址,要想真正访问到数据还是要对表进行一次IO。假如你要从表的100万行数据中取几个数据,那么利用索引迅速定位,访问索引的这IO开销就非常值了。但如果是从100万行数据中取50万行数据,就比如性别字段,那你相对需要访问50万次索引,再访问50万次表,加起来的开销并不会比直接对表进行一次完整扫描小。

当然如果把性别字段设为表的聚集索引,那么就肯定能加快大约一半该字段的查询速度了。聚集索引指的是表本身数据按哪个字段的值来进行排序。因此,聚集索引只能有一个,而且使用聚集索引不会付出额外IO开销。当然你得能舍得把聚集索引这么宝贵资源用到性别字段上。

可以根据业务场景需要,将性别和其它字段建立联合索引,比如时间戳,但是建立索引记得把时间戳字段放在性别前面。

感谢各位知友,作者这段时间在构思写一个Java知识精要系列,将java知识点全部串起来,适用于各个层次的java学习者,有兴趣可以关注下。


后加

  1. jvm gc 复制算法是怎样实现的
  2. 注解的原理
  3. 进程间通信的方式有哪些
  4. ReentrantLock 是可重入锁,什么是可重入锁
  5. 线程执行过程中遇到异常会发生什么,怎样处理
  6. HashMap put()元素产生冲突,为什么用LinkedList(拉链法)而不用ArrayList解决,产生冲突时key值不等,新元素怎样加入链表,为什么这么设计(jdk1.8之前)
  7. 双检锁写一个单例模式,为什么要用volatile修饰对象,Object object = new Object(); object为null吗?为什么
  8. Object object = new Object(); 初始化的顺序是什么在jvm各区域做了什么
  9. 线程怎样按顺序执行
  10. true or false ?
ArrayList<Integer> list1 = new ArrayList<>(); 
ArrayList<String> list2 = new ArrayList<>();  
System.out.print(list1.getClass() == list2.getClass); 

11. 修饰类的锁和修饰方法的锁的区别

12. 下面代码中的method()方法会互斥访问吗,为什么

class A {
    public synchronized void method() {/**/}
}

new Thread(() -> { A a = new A();a.method(); }).start();
 new Thread(() -> { A b = new A();b.method(); }).start();

13. synchronized在1.7以后的版本作了什么优化提升效率

14.CAS底层是怎样实现原子性的

15.java线程池实现的原理

16. 算法题:各大排序算法(尤其是快排和堆排序),查找(二分),树的遍历,DFS和BFS...

后加的16个题目只能说是常规题型,网上解答都有,在此不写答案了,腾出时间最近一直想写个java知识精要系列。

参考资料:

《java编程思想》

《Effective Java 第三版》

《深入理解java虚拟机》

《高性能Mysql》

《Spring实战》

《数据结构-使用C++语言描述》

基于知识图谱的农作物病虫害问答系统设计与实现 基于规则的问题分类是自问答系统诞生以来就一直存在的方式,主要代表就是众多的专家系统,构建专家系统采用的是规则分类器,优点是能够对特定领域、特征明显的问题进行高效精准问答,但是。,在问答系统中,问题以语音及文本字符等自然语言形式输入,利用问答系统的内部的逻辑处理模块,通过自然语言处理技术获得输入问句的详细语义信息,再经过知识检索、置信分析等步骤,自然语言处理中,用于文本分类任务的机器学习方式有两种,一种用传统的机器学习,如 NBC、SVM 等,另一种采用深度学习,如 CNN 和 RNN 等。 阅读详情

相关推荐

【GD32F407】i2c主机发送,从机中断接收

前言 现在手里负责的一个项目需要用i2c和主芯片进行通信主动发送,中断接收,这就需要支持i2c主机模式和从机模式,先查看原理图 这里我们用到了两条i2c总线进行数据的交替传输,避免在使用一条总线是发送数据和接收数据冲突 初始化i2c控制器 s32_k i2cDevInit(u8 byBusId, TI2cBus *pTI2cBus) { //PCLK = 36000000 BOOL retFlg = FALSE; int I2xSCL = pTI2cBus->byFastMode ?

Enosji的博客 6246

连夜再整理几个开源项目:练手/毕设/私活都不愁了

后台管理类项目 项目名称:JeeSite 项目介绍: 这是个典型的SSM后台管理项目(不是有很多小伙伴让推荐SSM项目练手嘛),基于经典技术组合(Spring MVC、Shiro、MyBatis、Bootstrap UI等)开发,适合学习练手。 而且它作为一个典型的后台管理系统,要素基本都有,包括:组织机构、角色用户、权限授权、数据权限、内容管理、工作流等。 尤其要提的就是最后的工作流模块,它可以实现提工单、审核/审批等流程,这个在后台管理类项目里是必备的模块。 传送门: https:..

u014089832的博客 1929

避坑指南:CentOS7.9安装Python3.8.16后yum报错的快速修复方法

本文详细解析了在CentOS7.9系统安装Python3.8.16后导致yum报错的原因,并提供了快速修复方法。通过修改yum配置文件指向Python2解释器,以及使用alternatives工具管理多版本Python,有效解决兼容性问题。同时推荐使用虚拟环境隔离开发环境,避免影响系统稳定性。

weixin_26908317的博客 496

哪些项目适合写进Java程序员面试简历?推荐这10类

临近毕业,有很多小伙伴会问,我要去面试了,但目前没有做过什么项目,有没有推荐的项目?今天小编给大家推荐几个适合写在简历里的项目。如果你是没有做过项目的小白,那么建议你去跟着项目视频学习,因为没有人会一点一点的手把手免费教你做项目,你能做的就是在网络上寻找一些项目,刚开始可以找一点简单的,小游戏项目,试着练练手,后期一点点的增加难度,把项目吃透。等你做得项目多一些了,就可以自己上手,试着把简历包装一下,不过不要夸大其实哦。下面分享适合写进简历的10大项目:1、新冠疫情统计系统2、家教系统3、进销存管理系统4、

java_spring6的博客 2156

YALMIP介绍及怎么在Matlab中加YALMIP、SDPT3

目录YALMIP简介怎么在Matlab中加YALMIP?1. 创建决策变量:2. 添加约束:3. 参数配置4. 求解怎么在MatlabR2019a中加YALMIP?1.下载工具包2.放置工具包3.添加路径4.测试安装结果怎么在MatlabR2019a中加SDPT3? YALMIP简介 怎么在Matlab中加YALMIP? yalmip是一位“集大成者”,它不仅自己包含基本的线性规划求解算法,比如linprog(线性规划)、bintprog(二值线性规划)、bnb(分支界定算法)等,他还提供了对cpl

m0_51431440的博客 2万+

YOLOv7独家原创改进:多种新颖的改进方式 | 保持原始信息-深度可分离卷积(MDSConv) | 全局感受野的空间金字塔 (Improve-SPPF)算法 | CA注意力改进版

多种新颖的改进方式 | 保持原始信息-深度可分离卷积(MDSConv) | 全局感受野的空间金字塔 (Improve-SPPF)算法 | CA注意力改进版

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1667

String str=new String("abc");创建几个对象?

String s=new String("abc")创建了几个对象? String str=new String("abc");   紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信大家对这道题并不陌生,答案也是众所周知的,2个。 接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JAVA知识。   我们可以把上面这行代码分

ontheroad1875的专栏 3478

因果强化学习:优化决策策略的因果方法

1. 背景介绍 1.1 传统强化学习的局限性 强化学习(Reinforcement Learning, RL)是一种通过与环境交互来学习最优决策策略的方法。然而,传统强化学习方法在面对复杂、动态和不确定的现实世界问题时,往往存在以下局限性: 数据效率低:传统强化学习方法

AI天才研究院 658

面试时这样介绍自己的项目经验,成功率能达到98.99%

虽时至年底,大多数小伙伴都知道,2018年是互联网行业最不平凡的一年。各类平台的倒闭、破产、清算,尤其是6、7月分全国大范围P2P集中爆雷跑路,再加上贸易战等,居多因素,裁员的、失业的大有人在,所以,虽近年底,找工作的伙伴应该还不在少数,所以,今天,给大家分享一些面试技巧文章。假如去面试要问10个问题,那么至少5个问题会根据你所介绍的项目背景来问。面试时7份靠能力,3份靠技能...

weixin_34381666的博客 1万+

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 663

GLM-4本地部署的实战教程

本文主要介绍了GLM-4-9B本地部署的实战教程,希望对学习和使用大模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 下载模型文件 3. 运行glm-4-9b-chat

herosunly的博客 25万+

阿里面试官分享:我遇到过的那些质量很高的 Java 面试

我在所谓的该枪毙的年龄35+入职了阿里P8,从业十余年从未离开过一线。同时,作为大厂的认证面试官,我在实际招聘中见过各类候选人,他们的失败和成功经历都可以给你们一些参考。 分享一些我在面试中考察过的面试题,关于详细解析,也可以移步我主讲的《Java 高级工程师》免费试听。 Java后端3面,本科校招进来的,挺优秀的小伙子。 JDK 和 JRE 有什么区别? 答:具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:

九章算法的博客 324

cdk&java | 分子sdf文件生成

sdf

ASKCOS博客 1089

作为java程序员,在金三银四季你遇到过哪些质量很高的java面试?

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。很多人担心学了容易忘,这里教你一个方法,那就是重复学习。打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

2401_83916283的博客 838

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

你遇到过哪些质量很高的 Java 面试题?

1、Exception和Error有什么区别? 典型回答: Exception和Error都是继承了Throwable类,在Java中只有Throwable类型的实例才可以被抛出或者捕获,它是异常处理机制的基本组成类型。Exception和Error体现了Java平台设计者对不同异常情况的分类。Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。Error是...

weixin_44157001的博客 211

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 阿里P8对Spring源码阅读的几个建议
下一篇: 不同编程语言的程序员之间有鄙视链么?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值