版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
后端开发岗位招聘面试题及回答建议(某大型国企)2025年一、单项选择题(每题2分,共20分)1.在SpringBoot3.x中,默认的嵌入式Web容器是A.Jetty B.Undertow C.Tomcat D.Netty【答案】C【建议】国企项目普遍以稳定为主,Tomcat在兼容性与运维工具链上最成熟,回答时可补充“若对IO密集型场景有极致要求,可替换为Undertow,但需通过exclusion方式移除Tomcat依赖并引入相应starter”。2.某财务系统使用MySQL8.0,需对金额字段做精确计算,最合适的列类型是A.FLOAT B.DOUBLE C.DECIMAL(19,4) D.BIGINT【答案】C【建议】强调DECIMAL的定点特性,避免二进制浮点误差;同时指出“19,4”可覆盖9万亿内金额、保留四位小数,满足国资委财务报送精度要求。3.在Linux宿主机上查看Java进程打开的文件句柄数,应使用的命令是A.top B.lsof-p<PID>|wc-l C.strace D.vmstat【答案】B【建议】补充“国企生产环境常因ulimit限制导致Toomanyopenfiles,需同步检查/etc/security/limits.conf与systemdservice文件中的LimitNOFILE”。4.关于RedisCluster数据倾斜,下列做法最无效的是A.对热点key加本地缓存 B.使用HashTag把相关key强制映射到同一slotC.调大cluster-node-timeout D.在客户端做本地预分片【答案】C【建议】cluster-node-timeout仅影响故障切换时效,与数据分布无关;回答时可给出“使用redis-cli--hotkeys配合监控平台实时发现倾斜”。5.在JDK21的虚拟线程(VirtualThread)模型下,下列说法正确的是A.虚拟线程数量受限于操作系统内核调度器 B.synchronized代码块会pincarrier线程C.虚拟线程栈保存在堆外内存 D.创建虚拟线程必须显式指定ForkJoinPool【答案】B【建议】指出pin场景会让平台线程阻塞,建议替换为ReentrantLock或采用ConcurrentHashMap的computeIfAbsent减少竞争。6.某微服务使用Kafka3.6,消费组重平衡触发过于频繁,最优先排查的参数是A.erval.ms B.fetch.min.bytes C.compression.type D.linger.ms【答案】A【建议】国企内网常有FullGC抖动,导致poll间隔超阈值被coordinator视为宕机,可调大该参数至业务处理耗时的2倍,并开启Kafka的StaticMembership功能。7.在GitFlow流程中,发布正式版前应从哪个分支拉取release分支A.main B.develop C.feature D.hotfix【答案】B【建议】回答时补充“国企审计要求每次上线须通过merge--no-ff保留历史,release分支需经SIT、UAT双重门禁,合并回main后必须打tag,格式为v{yy}.{mm}.{build}”。8.使用MyBatis-Plus3.5实现多租户,最优雅的拦截器注入点是A.Executor B.StatementHandler C.ParameterHandler D.ResultSetHandler【答案】B【建议】在StatementHandler的prepare阶段改写SQL,可兼顾分页插件与租户插件顺序;需强调“国企项目常按‘法人码’隔离,必须在ThreadLocal中提前写入tenant_id,防止横向越权”。9.在Maven3.9中,加速依赖解析且符合国企内网安全规范的最佳方式是A.修改settings.xml镜像为阿里云公网 B.搭建Nexus3私服并配置路由规则C.使用mvn-o离线模式 D.每个项目提交lib目录【答案】B【建议】指出Nexus3的blobstore可对接国产对象存储,实现高可用;通过routing规则屏蔽外部仓库,同时在内网GitLabCI中配置deploykey,实现依赖可信追溯。10.在SpringSecurity6中,默认的密码编码器是A.NoOpPasswordEncoder B.BCryptPasswordEncoder C.Pbkdf2PasswordEncoder D.SCryptPasswordEncoder【答案】B【建议】补充“等保2.0要求密码算法需经国密局认可,若使用国密SM4/SM3,可自定义实现SM3PasswordEncoder并注册到SpringSecurity的密码编码器链”。二、多项选择题(每题3分,共15分)11.关于分布式事务Seata2.0的AT模式,下列说法正确的有A.基于两阶段提交 B.需要undolog C.支持跨库跨服务 D.业务代码无需加@GlobalTransactional【答案】A、B、C【建议】指出D错误,必须加注解开启全局事务;国企ERP场景下,建议把Seata-server注册到Nacos并开启DB模式,事务会话持久化到MySQL,防止宕机后事务悬挂。12.以下哪些做法可以有效降低FullGC次数A.将大对象放入ZGC的CollectedHeap B.使用G1并调大-XX:MaxGCPauseMillisC.把静态大Map改造为Caffeine软引用缓存 D.降低-Xms与-Xmx差值【答案】B、C、D【建议】ZGC无分代,大对象直接进入区域,A无效;回答时补充“国企生产环境统一接入Prometheus+Grafana,通过GCStall指标告警,阈值设为5%”。13.在Dockerfile中,能够提升镜像安全性的措施有A.使用官方alpine作为基础镜像 B.以非root用户启动进程C.将敏感配置写入.env再COPY D.使用multi-stage丢弃构建依赖【答案】B、D【建议】A的alpine漏洞库更新滞后,国企要求使用内部扫描过的ubi-minimal;C的.env仍会被层记录,应使用dockersecret或k8ssecret。14.关于Linux的IO模型,下列哪些属于同步IOA.select B.epoll_wait C.read D.aio_read【答案】A、B、C【建议】强调aio_read属于LinuxAIO,是真正的异步;select/epoll_wait在数据拷贝阶段仍阻塞,故归为同步。15.在OAuth2.1授权码流程中,能够防止授权码泄露被重放的有A.PKCE B.state参数 C.短有效期授权码 D.使用client_secret_basic【答案】A、B、C【建议】国企移动办公APP需通过国测中心测评,必须开启PKCE;state需与会话绑定并存入Redis,过期时间30秒。三、判断题(每题1分,共10分)16.在JDK17中,ZGC支持压缩指针。(×)【建议】ZGC直到JDK21才引入压缩指针,回答时指出“压缩指针需满足堆≤4TB,且开启+UseCompressedOops”。17.MySQL的REPEATABLEREAD隔离级别下,Next-KeyLock可以避免幻读。(√)【建议】补充“国企资金系统使用SELECT…FORUPDATE时,务必走索引,否则间隙锁会升级为表锁,导致并发骤降”。18.Kafka的topic分区数一旦创建便无法减少。(√)【建议】若业务萎缩,可新建少分区topic后做数据迁移,避免直接删除导致审计日志缺失。19.在SpringCloudGateway中,全局过滤器Ordered值越小,优先级越低。(×)【建议】值越小越先执行;国企网关常把鉴权过滤器设为HIGHEST_PRECEDENCE+1,留空一位方便应急插桩。20.Linux的tmpfs重启后数据不会丢失。(×)【建议】tmpfs基于内存+swap,重启即消失;若需临时落盘,可挂载到SSD并开启swapaccount=1。21.使用Feign调用时,默认使用JDK的HttpURLConnection。(√)【建议】可替换为ApacheHttpClient5以支持连接池,配置feign.httpclient.enabled=true。22.Redis的RDB文件采用LZF压缩算法。(√)【建议】指出“国企等保要求RDB异地备份,需通过国密SM4加密后再传输,加密流式处理防止内存暴涨”。23.在Git中,执行gitreset--hard后,用gitreflog仍有机会找回提交。(√)【建议】reflog默认保留90天,国企审计要求关键仓库需设置core.logAllRefUpdates=true并定期备份reflog。24.使用JPA的@Version字段可以实现乐观锁,但必须手动捕获OptimisticLockException。(√)【建议】推荐在Service层统一用@Retryable(value=OptimisticLockException.class,maxAttempts=3)。25.在Linux中,进程打开的文件描述符上限由/proc/sys/fs/file-max决定,而单个进程由ulimit-n决定。(√)【建议】file-max是系统级,ulimit是用户级;国企容器平台需在daemon.json中设置"default-ulimits"防止逃逸。四、填空题(每空2分,共20分)26.在SpringBoot中,将默认的JSON序列化库从Jackson替换为Fastjson2,需排除__________依赖,再引入__________starter。【答案】spring-boot-starter-json、fastjson2-spring-boot-starter【建议】指出“国企安全测评要求关闭AutoType,需配置JSON.parseObjectsafeMode=true”。27.MySQL8.0开启GTID后,使用mysqldump做逻辑备份时,需加__________参数,否则备份文件无法用于建立从库。【答案】--set-gtid-purged=OFF【建议】解释“OFF”表示不生成SET@@GLOBAL.GTID_PURGED,避免新从库冲突;若做异构迁移,可改为COMMENT。28.Linux内核参数__________用于控制TCP连接最大排队长度,默认值通常为128,高并发网关建议调至1024。【答案】net.core.somaxconn【建议】需同步修改nginx/tomcat的backlog参数,否则只改内核无效。29.在Elasticsearch8.x中,把text字段用于排序会报错,需增加__________子字段,并设置fielddata=true。【答案】keyword【建议】国企日志平台常使用template映射,模板中预置“.keyword”以避免线上事故。30.Git提交信息若包含__________关键字,GitLabCI可自动跳过流水线。【答案】[skipci]或[ciskip]【建议】为防止恶意跳过,可在.gitlab-ci.yml加规则:if:'$CI_COMMIT_MESSAGE!~/\[skipci\]/'31.在Maven中,__________作用域的依赖不会传递到下游模块,但会参与当前模块的编译与测试。【答案】provided【建议】国企ParentPOM统一把lombok、spring-boot-starter-tomcat设为provided,防止可执行jar臃肿。32.使用Redisson实现分布式锁,为防止业务宕机未释放,需加__________参数,默认30秒。【答案】leaseTime【建议】指出“watchdog”机制默认续期30秒,若手动设置leaseTime则不会续期;国企财务冲正场景建议leaseTime=业务最大耗时+50%。33.在Docker中,__________指令可以设置容器的主机名,并在bridge网络中写入/etc/hosts。【答案】--hostname【建议】国企k8s平台通过StatefulSet的podName字段自动注入,方便审计追踪。34.在Java中,__________类提供了基于CAS的Long类型原子更新,比synchronized性能更高。【答案】AtomicLong【建议】高并发场景可升级为LongAdder,分散热点cell,但统计型业务需考虑sumThenReset的准确性。35.在Linux中,__________命令可以查看当前系统所有块设备的I/O调度算法。【答案】cat/sys/block//queue/scheduler【建议】SSD建议设为none或mq-deadline,机械盘设为bfq;国企私有云通过Ansible批量下发。五、简答题(每题10分,共30分)36.描述一次线上CPU飙高到400%的完整排查过程,并给出根因与改进方案。【参考答案】1)top-H-p<PID>找到占用最高的四个线程,记下nid。2)printf"%x\n"<nid>转16进制,用jstack导出栈,grep-A30定位到GC线程。3)jstat-gcutil1s5发现Old区99%,FGC每秒一次。4)用jmap-histo:live发现某ArrayList持有2.3G大对象,来源为财务报表缓存未释放。5)复盘:开发在Spring单例bean中误用成员变量缓存List,未清理。改进:a.将缓存改为Caffeine,设置maximumSize=1000+expireAfterWrite=30min;b.代码审查引入SpotBugs,检测MutableStaticFields;c.生产环境接入ZGC,-Xmx从8G降至4G,停顿从800ms降至5ms;d.在Nacos配置中心增加动态开关,紧急情况下可关闭报表缓存。37.某国企OA系统采用SpringCloudAlibaba,需对接统一身份认证平台(基于SM2国密),请给出完整集成步骤与密钥管理方案。【参考答案】1)引入bcprov-jdk18on国密包,自定义SM2KeyPairGenerator,封装为Spring的KeyStoreBean。2)在gateway模块新增AuthGlobalFilter,拦截/login请求,用SM2公钥加密随机AES密钥,返回前端。3)前端用sm-crypto库加密密码,后端用BouncyCastle解密,再通过LDAP/AD校验。4)密钥管理:a.私钥存入HSM(国密PCI-E卡),通过PKCS11接口访问;b.公钥与证书存入k8ssecret,通过CSI驱动挂载到Pod内存文件系统,只读权限0555;c.定期轮换:每90天由CA重新签发,旧证书保留7天用于验签历史token;d.审计:所有签名操作写入Kafkatopic=security_sm2,由ELK实时告警。5)性能优化:a.使用GPU加速卡做SM2验签,QPS从800提升至6200;b.开启gateway本地缓存,公钥缓存5分钟,减少HSM调用90%。38.说明如何在零停机前提下,将MySQL5.7单实例(1.2T数据)迁移至MySQL8.0MGR集群(3节点),并保证数据一致性、可回滚。【参考答案】1)前置检查:a.关闭5.7的querycache,避免升级后废弃参数警告;b.使用mysql-shell的util.checkForServerUpgrade()生成报告,修复utf8mb3、过时函数。2)搭建8.0MGR:a.三节点采用单主模式,group_replication_single_primary_mode=ON;b.启用mysql_native_authentication插件,兼容老业务;c.参数loose-group_replication_flow_control_mode=DISABLED,防止大事务限流。3)全量迁移:a.使用xtrabackup--no-lock--slave-info备份,记录binlog位点;b.备份文件通过rsync+stunnel加密传输到节点1,耗时2h10m;c.节点1恢复后,changemasterto指向5.7旧库,开启异步复制,延迟保持在0s。4)增量同步:a.开发双写开关,写入老库同时写入新库,开关默认false;b.使用debezium抓取5.7binlog,写入Kafka,由消费端写入8.0,做数据校验;c.校验脚本:每天凌晨对比行数、checksum,差异<0.001%视为达标。5)切换流量:a.在Nginx层按uid灰度,10%→50%→100%,三天完成;b.切换瞬间开启全局读锁flushtableswithreadlock,切换数据源,释放锁,耗时80ms;c.保留5.7库作为冷备,延迟复制8.0,binlog保留7天,支持秒级回滚。6)回滚方案:a.若发现数据异常,通过反向debezium把8.0增量同步回5.7;b.切换Nginx回源,重启应用,回滚窗口控制在5分钟内;c.事后复盘,输出《数据库升级红线检查表》,纳入CMDB。六、编程题(25分)39.实现一个高并发库存扣减服务,要求:1)支持多节点部署,无超卖;2)单次扣减QPS≥5k,RT≤50ms;3)提供降级与监控能力;4)代码需包含单元测试,覆盖正常、并发、异常场景。【参考实现】技术栈:SpringBoot3.2+Redisson+MySQL8.0+RedisCluster+Druid+Micrometera)数据库表CREATETABLEt_stock(sku_idBIGINTPRIMARYKEY,availableINTNOTNULL,versionBIGINTNOTNULL,update_timeDATETIME(3))ENGINE=InnoDB;b)核心代码@ServicepublicclassStockService{@ResourceprivateRedissonClientredisson;@ResourceprivateStockMappermapper;privatestaticfinalStringSTOCK_LOCK_KEY="stock:lock:{skuId}";privatestaticfinalStringSTOCK_CACHE_KEY="stock:cache:{skuId}";@Transactional(rollbackFor=Exception.class)publicbooleandeduct(LongskuId,intnum){RLocklock=redisson.getLock(STOCK_LOCK_KEY.replace("{skuId}",skuId.toString()));try{if(!lock.tryLock(50,TimeUnit.MILLISECONDS)){Metrics.counter("stock.lock.fail","sku",skuId.toString()).increment();returnfalse;}//缓存预扣RBucket<Integer>bucket=redisson.getBucket(STOCK_CACHE_KEY.replace("{skuId}",skuId.toString()));Integercached=bucket.get();if(cached!=null&&cached<num){returnfalse;}//数据库乐观锁扣减intaffected=mapper.deduct(skuId,num);if(affected==1){bucket.set(cached-num,30,TimeUnit.MINUTES);Metrics.counter("stock.deduct.success").increment();returntrue;}returnfalse;}catch(InterruptedExceptione){Thread.currentThread().interrupt();returnfalse;}finally{if(lock.isHeldByCurrentThread()){lock.unlock();}}}@Scheduled(fixedDelay=60_000)publicvoidsyncCache(){List<Stock>list=mapper.selectAll();list.forEac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 某高层工程钢筋专项施工设计方案
- 法律职业资格练习题二试卷(练习题库)
- 浅色简约商务金融工作总结模板
- 2026年化学实验原理单元测试题库
- 华利集团4Q25营收利润不及预期2026年盈利修复可期
- 青少年心理危机解析
- 第7章:微信小程序云开发入门
- 对企业所得税税务筹划的研究
- 《三国演义》简答题及答案
- 2026年保密知识-多项选择题考试真题
- (2021-2025)5年高考数学真题分类汇编专题17 圆锥曲线(解答题)6种常见考法归类(全国)(解析版)
- DB15∕T 3413-2024 住宅小区和商业用房供配电设施规范
- GB/T 30117.6-2025灯和灯系统的光生物安全第6部分:紫外线灯产品
- 新加坡安全培训考试题库及答案解析
- 2025年数据标注工程试题及答案
- 标准化项目立项管理流程优化研究
- 消费者就是学习者课件
- 2025年四川省从“五方面人员”中选拔乡镇领导班子成员考试历年参考题库含答案详解(5套)
- 《钢筋桁架楼承板应用技术规程》TCECS 1069-2022
- 中国智·惠世界(2025)案例集-中国人工智能产品和技术在亚洲、非洲、南美洲、欧洲等国家和地区赋能发展的生动实践
- 2025年春节后家具制造行业复工复产安全技术措施
评论
0/150
提交评论