尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
金融科技Java初级岗笔试复盘:集合并发、SQL优化与Spring核心考点
上周A同学发来一套某金融科技公司初级Java开发岗的在线笔试说自己答得稀碎想让我帮忙复盘。我拿过来扫了一遍发现这套题出得挺有水平表面看全是常规八股实际每一道都在往工程坑和金融系统最关心的稳定性和并发问题上靠。趁记忆还热乎我把整套题从选择题到编程题完整拆一遍顺带聊一聊答题时的取舍、易错点以及复习时该怎么举一反三。1. 笔试全貌先搞清楚它在考什么1.1 题型分布和考察权重这套题总共60分钟卷面满分100分题型分布是这样的题型题量单题分值合计主要方向选择题201分20分Java基础、集合、并发、JVM填空题101分10分概念关键词、API细节简答题45分20分Spring、线程池、事务SQL题210分20分索引优化、事务隔离编程题215分30分单例、LRU、二分查找选择题覆盖面广但真正的分水岭在SQL题和编程题。为什么因为日常开发里写的最多的就是SQL和业务代码尤其金融系统对数据准确性极其敏感写错一条where条件、一个索引可能就是线上事故。初级岗位不指望你有多深的架构经验但底子必须扎实。1.2 为什么金融科技公司爱考底层题金融系统每天和钱打交道并发峰值远比普通业务系统高对稳定性要求也更苛刻。一个HashMap在并发下丢几条数据普通社区论坛可以忍交易系统绝对不能忍。所以面试官会通过集合、并发、Spring生命周期这些题快速判断你有没有真正读过底层源码还是只是在网上背了一堆面试答案。这套题还有一个隐蔽特点很多题目都留了“追问钩子”。比如考完线程池参数紧接着会问“你们生产环境核心线程数配多少为什么”考完String比较会追一句“intern()到底做了什么”。如果你只是机械记忆很容易在复试环节露馅。2. Java基础题字符串、装箱、异常、修饰符2.1 String 比较new 和字面量之间差了一个常量池原题大概是给出一段代码判断几个布尔表达式的结果String a abc; String b new String(abc); String c a ; String d ab c; boolean r1 a b; boolean r2 a c; boolean r3 a d; boolean r4 a.equals(b);这里四个判断的正确结果是r1是falser2是falser3是truer4是true。逻辑拆开来看abc字面量直接放进字符串常量池变量a指向常量池里的对象new String(abc)会在堆上额外创建一个新对象b指向的是这个新对象所以a b是false。a 这段代码因为a是普通变量编译后相当于new StringBuilder(a).append().toString()运行期生成一个新的String对象不进常量池所以a c是false。ab c则不一样两个都是编译期常量JVM在编译阶段会直接折叠成abc所以它指向常量池中同一个对象a d是true。这个知识点经常有人忽略字符串常量折叠的规则。只有字面量拼接或者final修饰的常量变量拼接才会在编译期合并普通变量拼接一定会走StringBuilder。想看真相很简单把class文件反编译一遍字节码里清清楚楚。2.2 Integer 缓存与自动装箱第二道经典题直接问Integer x 127; Integer y 127; Integer m 128; Integer n 128; boolean r1 x y; boolean r2 m n;结果是r1为truer2为false。原因在于Integer内部维护了IntegerCache默认缓存[-128, 127]区间的Integer对象。自动装箱时会调用Integer.valueOf()当值落在缓存区间内时直接返回缓存中的同一个对象超出区间则new一个全新对象。比较的是引用地址所以127的两个包装类是同一个对象128的两个包装类不是。如果追问一层new Integer(127) Integer.valueOf(127)结果是多少答案是false因为new强制创建了新对象和缓存对象完全不是同一个引用。笔试里只要看到包装类型用比较第一反应都该是equals。同时还要记住Long、Short、Byte也都有缓存而Float、Double没有缓存概念因为浮点数空间连续且不是整数语义。2.3 try-catch-finally 里的 return 陷阱异常题出的很刁给一个方法问返回结果。public int test() { int a 10; try { return a; } finally { return a; } }答案是11。因为finally块里的return会覆盖try块里已经计算好的返回值这是整个异常体系里最坑的行为。再看另一个变体public int test() { int a 10; try { return a; } finally { System.out.println(a); } }结果是方法返回10控制台打印11。原因在于a先把当前值10作为返回值保存下来然后才自增成11finally执行时看到的是自增后的11但方法真正返回的是之前已经确定好的10。我在实际代码review里见过有人习惯在finally里做清理操作顺手写了个return结果覆盖了正常业务返回值排查半天才发现是这个原因。所以写finally时不要写return也不要修改即将返回的变量避免线上出这种隐蔽Bug。2.4 protected 和重写规则基础题里还会考访问修饰符。问题一般是这样父类里有一个protected方法哪些地方可以访问它子类重写时能改成private吗正确回答是protected成员可以被同一个包内的类访问也可以被不同包下的子类访问但子类只能通过继承关系访问自己父类继承来的成员不能通过父类引用去访问其他实例的protected成员。重写规则更关键子类重写方法的访问权限不能比父类更低所以protected不能改成private也不能改成包私有但可以放大成public。同时受检异常也不能比父类抛得更宽不能抛出父类方法没有的新受检异常。这个规则背后是面向对象的多态契约调用方只依赖父类的声明如果子类私自降低访问级别或扩大异常范围编译期可能没有直接问题但运行期会让统一调用逻辑崩溃。3. 集合与并发拉开差距的主战场3.1 HashMap 的 put 流程这道题几乎是必考面试官会要求完整描述JDK8的put过程。标准回答流程是这样的先判断key是否为nullHashMap允许存一个null key然后调用hash(key)方法将key的hashCode高16位和低16位做异或扰动再用(n - 1) hash算出数组下标这里n是数组长度必须是2的幂这样位运算才能替代取模。如果table为空先调用resize初始化。如果下标位置没有节点直接new一个Node放进去如果已经有节点先判断hash和key是否都相等相等就覆盖否则如果当前节点是TreeNode就插入红黑树如果是普通链表节点就遍历链表找到相同key则覆盖没有则尾插新节点。链表长度超过8时会尝试树化但树化还有个前提数组长度必须大于等于64如果数组还太小优先扩容而不是树化。最后增加modCount和sizesize超过threshold就扩容。很多人会漏掉“高16位异或低16位”这一步面试官追问为什么要做这一步时可以用一句话回答数组长度通常不大只用key的hashCode低位参与运算冲突会非常严重异或扰动能把高位信息也混进来降低碰撞概率。3.2 并发场景下的 HashMap从数据覆盖到死循环HashMap在并发环境下不安全这个结论几乎没人不知道但能讲清楚具体现象的人不多。JDK7版本在扩容时采用头插法并发扩容时两个线程可能同时处理同一条链表rehash之后节点顺序反转极端情况会形成环形链表。之后任何线程去get一个不存在的key都会在链表里无限循环下去CPU直接打满这是老生常谈的死循环问题。JDK8改成了尾插法环形链表的经典问题被解决了但并发下仍然危险两个线程同时执行put都判断某个槽位为空然后先后把自己构造的节点放进同一个槽位后放的直接覆盖先放的数据就丢了。另外size不是原子操作多线程统计出来的size也一定不准。这里我还要提醒一句有些面试者会说Collections.synchronizedMap(new HashMap())就线程安全了。这个说法没错但它锁的是整个map并发度很低金融大流量场景下完全不够看所以正确答案是使用ConcurrentHashMap。3.3 ConcurrentHashMap 的并发实现ConcurrentHashMap在JDK8里彻底改了实现面试时不需要默写全部源码但主流机制必须说清楚。JDK8放弃了分段锁改用CAS加synchronized锁桶的思路。put流程大致是如果table还没初始化通过CAS设置sizeCtl让多个线程竞争初始化如果目标桶是空的用CAS直接放入新节点如果目标桶不空synchronized锁住桶的头节点再遍历链表或红黑树插入。统计size时会用baseCount和CounterCell数组配合减少多线程竞争。对比一下JDK7的分段锁把整个map分成16个Segment锁粒度是Segment扩容时还要锁整个SegmentJDK8把锁粒度缩小到单个链表头节点并且空桶用CAS连锁都不需要所以并发能力明显更强。实际面试时能答出“CAS加锁桶”这个组合就已经超过一半竞争者。3.4 线程池参数到底怎么设置线程池这道题通常和实际场景挂钩原题会问自定义线程池需要哪些参数以及任务提交后的执行顺序。参数包括核心线程数corePoolSize、最大线程数maximumPoolSize、空闲线程存活时间keepAliveTime、时间单位unit、工作队列workQueue、线程工厂threadFactory、拒绝处理器handler。很多人记错执行顺序我再说一遍新任务提交后先尝试分配给核心线程如果核心线程都在干活任务进入阻塞队列等待队列满了才会创建非核心线程去处理直到达到最大线程数且队列也满了才会触发拒绝策略。所以不是核心满了立刻扩到最大队列就像一个缓冲池。拒绝策略有四种AbortPolicy直接抛异常、CallerRunsPolicy由提交任务的线程自己执行、DiscardPolicy默默丢弃、DiscardOldestPolicy丢弃队头最老的任务。金融项目里一般不用无界队列因为高峰期任务无限堆积会把内存打爆更稳妥的做法是有界队列加自定义拒绝策略比如把失败任务落库后异步补偿或者记录告警日志让监控介入。线程数估算公式也最好记住CPU密集型任务通常设置CPU核数加1IO密集型任务可以设置成CPU核数乘以(1加平均等待时间除以平均计算时间)。这个公式只能当起点真正的数值要靠压测调优。4. 数据库与SQL题优化能力是实打实的4.1 联合索引的最左前缀SQL题里有一道很典型的联合索引题给了索引idx(a, b, c)问哪些查询能用到索引。where a 1 and b 2 and c 3三个字段都能用上。where b 2 and c 3不能独立使用因为缺少最左列aB树只能从第一个排序字段开始匹配。where a 1 and c 3只能用a列b列这个中间字段断了c字段就用不上了。where b 2 and a 1优化器会调整条件顺序所以a和b都能用上。背后的原理是联合索引在B树中先按第一个字段排序第一个字段相同再按第二个字段排序以此类推。查询要使用索引必须从最左边开始连续匹配。很多人看到b2 and a1就以为不能用索引做了explain才发现优化器会自动重排这也是为什么我建议做这类题时别凭直觉打开执行计划看key列最靠谱。4.2 一条慢SQL优化题另一道SQL题给了真实场景交易表trade_order有1000万行数据下面这条SQL非常慢select * from trade_order where status 1 and create_time 2025-01-01 order by create_time desc limit 10;status字段只有0、1、2三种取值区分度非常低单独在status上建索引基本没意义因为优化器扫描到大量相同值后大概率会放弃索引。create_time字段有序且区分度高但只按create_time过滤会查出来大量不满足status的数据排序也代价很高。常规优化方向是建一个(status, create_time)复合索引这样先按status过滤再按create_time的有序性直接倒序取10条可以避免filesort。如果还需要查询很多字段可以考虑用(status, create_time, id, amount, ...)做成覆盖索引减少回表次数。另一个常见坑是深分页比如limit 100000, 10数据库会把前10万行全部扫一遍再丢弃正确做法是先查出主键范围再用主键join原表取数据或者用游标分页记录上一页最大id。做题时一定要说出“先explain查看type、key、rows、Extra如果有Using filesort或Using temporary就要优化”这个动作比直接甩一个加索引的结论专业得多。4.3 事务隔离级别与MVCC事务题目问的是MySQL默认隔离级别是什么以及如何解决幻读。MySQL默认隔离级别是可重复读RR。先说四类隔离级别读未提交会有脏读读已提交能避免脏读但会出现不可重复读可重复读能避免不可重复读但理论上还有幻读串行化完全隔离但并发能力差。RR解决不可重复读靠的是MVCC也就是多版本并发控制。每条记录在undo log里维护版本链事务第一次执行select时生成一个read viewRR模式下这个read view一直复用所以快照读能看到的数据始终一致。而幻读更复杂普通select是快照读不会出现幻读但如果执行select ... for update、update、delete这类当前读必须通过next-key lock来解决。next-key lock本质是记录锁加间隙锁的组合间隙锁锁住两个索引之间或者索引到无穷大之间的区间让其他事务在这个范围内无法插入新数据于是幻读被挡住。进阶一点可以说RR下的幻读其实有前提纯快照读不会幻读当前读需要锁如果能答到这个层次面试官会认为你对MVCC不是背概念而是真看过执行流程。4.4 防止重复下单还有一道应用题用户重复点击下单按钮怎么防止产生两条订单金融项目里的标准答案分三层第一层是前端按钮置灰防君子第二层是后端接口做幂等控制比如用Redis分布式锁或者一个全局请求id同一请求重复提交直接拒绝第三层也是最可靠的一层数据库层面建唯一索引比如对(user_id, order_no)字段加唯一约束并发插入时数据库只会让一个成功另一个抛唯一键冲突业务代码捕获异常后返回“订单已存在”。乐观锁也是常用手段在表里加version字段更新时update ... set status ? where id ? and version ?影响行数是0就说明已经被改过直接放弃操作。初级岗位能答出来“数据库唯一约束”这个兜底方案基本就能拿分。5. Spring核心生命周期与Bean作用域5.1 Bean 生命周期完整链路Spring的生命周期题几乎逃不掉但很多刚入行的同学只会说“创建、初始化、销毁”拿不到满分。完整链路可以按这个顺序记实例化前InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()可以在这里返回代理对象跳过默认实例化流程。实例化通过构造器创建Bean实例。属性填充执行依赖注入Autowired、Value、构造器注入都发生在这个阶段。初始化前各种Aware接口回调比如BeanNameAware把beanName塞给BeanBeanFactoryAware注入BeanFactoryApplicationContextAware注入ApplicationContext接着执行PostConstruct注解方法。初始化实现InitializingBean.afterPropertiesSet()或者配置了init-method在此执行。初始化后BeanPostProcessor.postProcessAfterInitialization()AOP动态代理通常在这个环节生成。Bean就绪可以被使用。销毁容器关闭时执行PreDestroy、DisposableBean.destroy()和destroy-method。面试官最喜欢追问的是PostConstruct和构造函数的区别。构造函数在Bean刚刚实例化时执行此时属性还没注入PostConstruct在属性注入完成之后执行所以想在初始化时依赖其他Bean的字段值必须用PostConstruct而不是在构造函数里读成员变量。5.2 单例Bean中的并发安全隐患Spring里默认的Bean作用域是singleton所有线程共享同一个Bean实例。如果在Bean里写一个可变成员变量并且业务方法里对它赋值就非常危险。举一个典型的错误例子Service public class UserService { private User currentUser; public void handle(Long userId) { currentUser userMapper.findById(userId); doSomething(); } }两个请求同时到达请求A把currentUser设置成用户1请求B紧接着把currentUser覆盖成用户2请求A继续往下处理时用到的可能已经是用户2的数据。下单、转账这类操作拿到错误身份信息后果很严重。正确的做法有几种最简单的就是不要用有状态Bean变量都通过方法参数传递如果确实需要存上下文比如登录用户信息通常用ThreadLocal来保存请求结束记得在finally里remove因为Web服务器使用线程池线程复用会带到下一次请求。Spring框架本身也大量使用ThreadLocal做事务上下文但使用后一定清理。5.3 Spring事务失效的经典场景事务题考得特别多因为生产环境里事务不生效是常见故障。我整理过几个高频失效原因:同类内部方法直接调用this.method()绕过了Spring代理Transactional不会生效。方法不是public代理无法拦截。异常被自己catch了事务代理看不到异常自然不回滚。抛出的是受检异常而Spring默认只对RuntimeException和Error回滚如果没有特别指定rollbackFor事务不回滚。数据库表引擎不支持事务比如MyISAM。答完这些原因后最好补一句解决方案可以用Transactional(rollbackFor Exception.class)指定异常类型内部自调用时把方法拆到另一个类或者从容器里拿到代理对象或者直接用TransactionTemplate编程式事务兜底。6. 编程题手写代码怎么拿满分6.1 双重检查锁单例单例模式是最常见的编程题要求手写一个线程安全单例。标准写法是双重检查锁加volatile代码长这样public class Singleton { private static volatile Singleton instance; private Singleton() { } public static Singleton getInstance() { if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } } return instance; } }volatile在这里不是可有可无的。instance new Singleton()在底层不是原子操作大致会经历分配内存、初始化对象、把引用指向内存三个步骤。如果没有volatileJVM可能先执行引用赋值再执行构造函数另一个线程在第一次判空时发现instance不为null直接返回一个尚未构造完成的对象后续使用某个字段就可能读到零值或null。volatile的两个能力刚好补上这个漏洞保证可见性保证禁止指令重排序。第一次判空是为了避免每次调用都进入synchronized减少锁竞争第二次判空是防止多个线程已经竞争到锁之后重复创建。写完代码最好再说一句“也可以使用静态内部类实现”它能利用类加载机制保证线程安全更简洁但很多面试官就是想看你能不能解释清楚volatile。6.2 LRU 缓存从一行代码到完整设计LRU题往往要求实现一个容量有限的缓存淘汰最近最少使用的数据。如果题目允许使用LinkedHashMap最快写法是这样class LRUCache extends LinkedHashMapInteger, Integer { private final int capacity; public LRUCache(int capacity) { super(capacity, 0.75f, true); this.capacity capacity; } Override protected boolean removeEldestEntry(Map.EntryInteger, Integer eldest) { return size() capacity; } }关键在于构造方法第三个参数accessOrder传trueLinkedHashMap才会按照访问顺序排序。get或put访问过的节点会被移动到链表尾部头部自然就是最久没用的节点超过容量后removeEldestEntry直接淘汰头部。这是很多刚毕业的人不知道的小细节。面试官通常还会追问如果不能用LinkedHashMap怎么办答法是自己设计HashMap加双向链表。HashMap负责O(1)查找key对应的节点双向链表维护访问顺序。get命中时把节点从链表原位置摘下来移到头部put时key已存在就更新值并移到头部key不存在就新建节点插到头部如果容量超过上限删除链表尾部节点同时从HashMap里淘汰对应key。双向链表的head和tail用哨兵节点能省掉大量边界判断。6.3 二分查找的边界问题二分查找属于“简单但与容易写错”的题编程题里偶尔会出现。基础版代码public int search(int[] nums, int target) { int left 0; int right nums.length - 1; while (left right) { int mid left (right - left) / 2; if (nums[mid] target) { return mid; } else if (nums[mid] target) { left mid 1; } else { right mid - 1; } } return -1; }这里有三个容易扣分的细节第一mid写成(left right) / 2在数组极长时可能溢出写成left (right - left) / 2更能体现基本功第二右边界选择nums.length - 1时循环条件必须是退出时left会大于right如果右边界选择nums.length循环条件则要改成第三方法开头最好做一次null判断题目没明说资源是否合法但代码不判空在面试官眼里就是粗糙。写完编程题一定要自己手动模拟一遍比如数组{1, 3, 5, 6}查找5把指针移动走一遍确认没有死循环再提交。7. 复盘时最常见的高频扣分点以及应试时间分配7.1 五个最容易扣分的地方我帮A同学复盘时从整张卷子里找出了五类高频扣分点几乎每次面试都能见到。第一只背结论不会画过程。比如HashMap说得很溜但面试官一问“链表什么时候转红黑树为什么是8”就卡壳。第二集合并发题答不出锁的粒度。只说ConcurrentHashMap线程安全不知道它具体是CAS加锁桶。第三SQL优化题不解释原因。直接说加索引不说明加在哪一列为什么能避免filesort。第四并发题只知道volatile不知道synchronized锁升级、ThreadLocal内存泄漏、线程池拒绝策略这些工程细节。第五编程题代码不规范没有空指针判断代码结构混乱写出的单例还是非线程安全版本。这些问题背后其实是同一个毛病学习时停留在“知道”的层次没有上升到“能讲清楚、能写对”的层次。7.2 时间分配和作答顺序整套题60分钟如果按卷面顺序从选择题开始做大概率会在填空题上浪费太多时间最后编程题草草收尾。我建议调整顺序。先花15分钟做两道编程题分值是30分而且需要完整推理放在头脑最清醒的时候写。再用10分钟做SQL题因为SQL优化题也很费脑。接下来15分钟做简答题把Spring事务和线程池这些需要展开的话题答完整。最后15分钟扫选择填空最后留5分钟检查编程题有没有粗心写错的地方。如果编程题完全没思路也不要空着。把解题思路写清楚写出部分关键代码至少能拿到步骤分。笔试阅卷不是只看最终结果思路往往比最后的代码更值钱。8. 学习建议与个人经验别把笔试当终点8.1 每道题至少准备一个追问这套卷子最大的价值是帮A同学摸清了复习方向。笔试只是第一关复试面试官一定会根据卷子上的题继续往下挖。所以我给A同学定了一个自测模板每道题都要能回答三件事是什么、为什么、实际项目里怎么用。比如String比较的题背会结果后继续追问常量池在JDK7以后放到了堆区哪个位置intern方法的实际用途是什么。又比如线程池参数追到生产环境该配置多少线程队列满了以后降级策略如何落地。能把这些延伸问题讲清楚才算真正掌握。8.2 查漏补缺的路径如果发现自己的薄弱环节集中在集合和并发就去看HashMap和ConcurrentHashMap源码注释配合画图理解扩容和锁流程。如果SQL优化薄弱就找几个真实的慢查询场景反复看explain输出。建议不要死记硬背源码而是把流程用口头语言复述一遍能对着没有Java基础的人讲明白说明真懂了。8.3 我个人的实际体会我见过不少笔试成绩不错的人到了复试就被延伸问题卡住原因就是刷题式复习只记住了答案。所以我一直让身边刚起步的开发者养成“写一遍、讲一遍、追一遍”的习惯。这套初级Java笔试题本身不算难难的是能不能透过题目看到公司真正关心的稳定性、并发、SQL性能这些工程问题。把这些基础打牢比多背一百道面试题都管用。最后再提一个小技巧笔试结束后趁记忆热乎立刻把不会的题整理成一份自己的错题笔记标明当时为什么答错再去代码里实际验证一遍。这个动作坚持半年明显能感觉到面试时不慌了。
RELATED

相关推荐

金融科技初级Java笔试全复盘:题型考点与编程题实战拆解

金融科技初级Java笔试全复盘:题型考点与编程题实战拆解

最近在牛客上刷题,好几次碰到有人问“某金融科技公司初级Java笔试题”的通勤回忆帖。这类帖子往往回复寥寥,偶尔有人在下面贴一道选择题答案,没头没尾。我自己也经历过这种笔试,深知真正需要的不只是一份题目清单,而是…

📅 2026/10/24 3:00:49
专科生AI论文工具实测:千笔与学术猹如何解决写作痛点

专科生AI论文工具实测:千笔与学术猹如何解决写作痛点

又到了论文季,我手机里被问得最多的一句话是:“有没有适合专科生用的AI论文工具?”问的人多了,我就把市面上叫得出名字的几个挨个试了一遍,其中对比最久的是千笔专业学术智能体和学术猹。这两款工具定位不一样&#xf…

📅 2026/10/24 3:00:49
电力用户用电信息采集通信协议集合与测试工具实战指南

电力用户用电信息采集通信协议集合与测试工具实战指南

简介:面向电力行业技术人员与智能电网开发者的通信协议资料包,聚焦用电信息采集系统中376.1、376.2、376.3、645与698等主流规约的理解与验证。内容既包含协议文档与说明,也配套集中器下行本地接口调试、645标准测试、698解析等国网电表测试软…

📅 2026/10/24 3:00:49
MORE NEWS

更多资讯

📰

TgtoDrive进阶技巧:多网盘联动与资源聚合搜索配置

TgtoDrive进阶技巧:多网盘联动与资源聚合搜索配置 TgtoDrive是一款强大的网盘媒体自动化平台,它通过巧妙的多网盘联动机制和资源聚合搜索配置,让用户能够高效管理115、123、光鸭云盘等多个网盘资源。本文将为您揭示如何配置这些高级功能&…

📰

TgtoDrive故障排除指南:解决常见部署与配置问题的终极解决方案

TgtoDrive故障排除指南:解决常见部署与配置问题的终极解决方案 TgtoDrive作为一款强大的网盘媒体自动化平台,为用户提供了从资源发现到Emby播放的全流程自动化体验。然而在实际部署和使用过程中,用户可能会遇到各种问题。本指南将为您提供全…

📰

TgtoDrive STRM生成全攻略:让网盘资源在Emby/Plex中直接播放

TgtoDrive STRM生成全攻略:让网盘资源在Emby/Plex中直接播放 TgtoDrive是一款功能强大的一条龙网盘媒体自动化平台,它能够从找资源、自动转存、智能整理、挂载STRM到Emby 302直链播放,实现全流程打通。其中,重点强化了115、123、…

📰

如何在Traits中扩展自定义Trait:从继承基类到ObjectMapper映射的5个步骤

【免费下载链接】Traits Modify your native iOS app in real time. 项目地址: https://gitcode.com/gh_mirrors/tr/Traits 点击查看 免费下载 Traits 是一个让 iOS 原生 App 无需重新编译即可实时修改设计与行为的开源库。本文面向新手,完整拆解在 Tra…

📰

UI UX Pro Max:快速生成完整设计系统的指南

UI UX Pro Max:快速生成完整设计系统的指南 【免费下载链接】ui-ux-pro-max-skill An AI skill that provides design intelligence for building professional UI/UX across multiple platforms. 项目地址: https://gitcode.com/gh_mirrors/ui/ui-ux-pro-max-skill UI …

📰

贪心题目:安排工作以达到最大收益

文章目录题目标题和出处难度题目描述要求示例数据范围解法思路和算法代码复杂度分析题目 标题和出处 标题:安排工作以达到最大收益 出处:826. 安排工作以达到最大收益 难度 5 级 题目描述 要求 有 n\texttt{n}n 个工作和 m\texttt{m}m 个工人。给…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬