笔试面试大杂烩

MyBatis的特点

       轻量级半自动ORM模型;(jdbc手动,灵活,代码繁琐,大批量快;hibernate全自动,不用写SQL)

        SQL与代码分离,便于统一管理维护;

        动态SQL,结果集映射;

        SQL编写量较大,不同数据库移植语法可能不同。

jdbc连接流程

        加载驱动 Class.forName("com.mysql.jdbc.Driver");

        创建数据库连接 con=DriverManager.getConnection(url,name.pwd);

        创建Statement实例 pst=con.prepareStatement(sql);

        执行SQL ResultSet res=pst.executeQuery(sql)或int rows=pst.executeUpdate(sql);

        遍历结果集 res.next();res.getString();

        处理异常,关闭资源 res.close();pst.close();con.close();

线程池的优点

        降低系统消耗、提高响应速度、方便统一管理。

        ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler)

Redis的部署方式

        单机模式,一台机器;

        主从模式,主数据库负责写操作,从数据库负责读操作,读写分离。

        哨兵模式,哨兵通过发送命令,等待Redis服务器响应,从而监控运行多个Redis实例,具备自动故障转移、集群监控、消息通知等功能,主挂了一个从变主

        集群模式,由多个Redis主从组成,数据分片备份;

Spring Bean 默认是单例的,如何保证并发安全

        类成员变量线程不安全。

        1.@Scope由singleton改为prototype或request,但会增大资源开销

        2.使用ThreadLocal存放,可以达到线程隔离,但同线程无法隔离

        3.尽量避免成员变量

        4.使用并发安全的容器,比如ConcurrentHashMapConcurrentHashSet

        参考虾皮二面:Spring Bean 默认是单例的,如何保证并发安全?

String为什么不可变,好处

        原因:数组变量和类被final修饰,变量被private修饰。

        好处:安全。

                String ns=Test.appendStr(s),s不会改变。

                可能会破坏HashSet等键值的唯一性。

序列化的应用场景

        网络传输、对象文件存储、对象缓存存储。

缓存读写策略

        1.旁路缓存模式(Redis)。写:先写DB再删除Cache;读:先读Cache,没有再读DB并更新Cache。

        2.读写穿透。写:先查Cache,无的话直接写DB,有的话更新Cache,Cache自动更新到DB;读:先读Cache,没有再读DB并更新Cache。

        3.异步缓存写入。只更新缓存,不直接更新 DB,而是改为异步批量的方式来更新 DB,对数据一致性带来了更大的挑战。

数据库分区分库分表

参考数据库分区、分表、分库_VickW的博客-CSDN博客_数据库分区分表

分区,物理存储分区,均摊到不同的硬盘、系统或服务器中:

        水平分区,数据量大,按行分区

        垂直分区,列太多或某些列数据量大,按列分区

分表,将一张表分成多张表。而分区只是一张表中的数据存储位置发生改变。

分库,突破单节点数据库服务器I/O能力限制,比如单台DB的存储空间不够。

        水平分库,将一张表分成多张表并存放在不同的数据库中。问题:影响主键自增;单表查询会变成多表(如count函数操作)。

        垂直分库,将系统中不存在关联关系或需要join的表放在不同数据库或服务器中。问题:ACID被打破;Join操作困难;外键约束受到影响。

工行软开杭州

RPC 参考(看总结)分布式 - 公司使用什么RPC框架,聊聊你理解的RPC原理_Q.E.D.的博客-CSDN博客_大公司都用什么rpc框架

重写和重载及原理

        重载是静态分派,重写是动态分派;

        静态分派发生在编译期,动态分派发生在运行期;

        编译看左边,运行看右边;

        private,static,final 方法发生在编译期,不能被重写,一旦发生了重写,将会在运行期处理。

数据库优化 语句 索引 建库 慢查询日志 分区分库分表

IOC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
香港大学计算机科学专业的笔试面试主要考察学生的理论基础、编程实践能力、解决问题的能力等方面。 首先,在理论基础方面,笔试面试可能会涉及计算机科学的基本概念、算法与数据结构、计算机网络、操作系统等知识点。学生需要通过选择题、填空题、简答题等形式,展示自己对这些基本概念的理解和掌握程度。 其次,在编程实践能力方面,笔试面试可能会要求学生写出简单的算法代码,解决一些常见的编程问题。通过编程题的答题过程,面试官可以看到学生的编程思维、代码逻辑和实现能力。 最后,在解决问题的能力方面,笔试面试可能会设置一些综合性的问题,考察学生分析和解决实际问题的能力。这些问题可能涵盖数据库设计、软件测试、系统架构等方面,需要学生结合自己的知识和实践经验,给出合理的解决方案。 为了准备这样的笔试面试,学生可以系统地复习计算机科学的基础知识,并进行编程训练,在实践中提高自己的编程能力。同时,还需要多阅读相关的技术文档和研究论文,了解最新的计算机科学发展动态,以便在面试中展现自己的学术素养和对新技术的理解。 总之,香港大学计算机科学专业的笔试面试是一个综合考察学生理论水平、编程实践和问题解决能力的机会。通过充分的准备和实践,相信同学们一定能够在面试中展现自己的优势,获得成功。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值