今天看到一份互联网公司工作时长排行,有人一周肝工作超过 60h,每天在工位十多个小时兢兢业业;有人享受工作和生活的平衡,每周完美卡点 8 小时工作。
即便都在互联网公司,生活也是截然不同的。
工作时长前 25 的公司,平均每周工作时长都超过了50小时(全文数据均源于duibiao.info):
在 pk 工时上,拼多多没有输过。不过拼多多的时薪,给得也非常大方。同样的统计口径下,拼多多初级工程师时薪中位数达到 258 元,中级工程师的时薪中位数,更是达到了 459 元。
不久前拼多多部分团队刚刚调整了考勤时间,将打卡时间从11-11-6 改成 10-9-6,午餐和晚餐的休息时间调整为 1 小时。看来卷中更有强者。不过拼多多一周工作 6 天,所以理论上说,排名在拼多多后面的几家公司,未必就比在拼多多上班轻松。
当然,有加班的朋友,也有不加班的。
位于排行榜末尾的 13 家互联网公司,平均每周工作时长,最短的还不到 40 小时。
互联网公司的卷王很多,但身体和健康同样重要。作为打工人,大家更喜欢哪一种生活呢?
这份工作时长排行仅供大家做一个参考。毕竟就算是同一家公司,不同部门或是项目组的工作时间也是不一样的。
想要拥有更多的选择权,那就需要自己多多投递,多多面试,手握更多的 offer。
今天也为大家准备了面试题,欢迎来面试鸭一起面试刷题~
MyBatis 写个 Xml 映射文件,再写个 DAO 接口就能执行,这个原理是什么?
回答重点
核心原理是 JDBC 的能力 和 动态代理,通过解析 XML 映射文件和动态生成 DAO 接口实现类来完成 SQL 的执行。
以下是详细的执行原理:
1)加载配置和 Mapper 映射文件:
MyBatis 启动时,通过配置文件( mybatis-config.xml
)加载数据库连接信息和 Mapper 映射文件(Mapper.xml
)。XML 文件中的 SQL 被解析为内部的 MappedStatement
对象,包含 SQL 语句、参数映射规则和返回结果映射规则。
2)动态代理实现 DAO 接口:
MyBatis 为每个 DAO 接口生成一个动态代理类( MapperProxy
),拦截接口方法调用。动态代理的核心是根据方法名和参数匹配到对应的 MappedStatement
,然后调用 JDBC 来执行 SQL。
3)通过 JDBC 执行 SQL:
MyBatis 的 SqlSession
是对 JDBC 的封装,它的核心是使用PreparedStatement
来完成 SQL 的执行。根据 XML 中定义的 SQL 和 DAO 接口方法传入的参数,生成完整的 SQL 查询,并将参数通过占位符( ?
)绑定到PreparedStatement
。最终通过 JDBC 执行 SQL,并获取 ResultSet
。
4)结果映射:
JDBC 的查询结果( ResultSet
)会被 MyBatis 的ResultMap
或resultType
映射为 DAO 接口方法的返回值类型(如 POJO、Map 或 List)。
扩展知识
MyBatis 与 JDBC 的关系
MyBatis 本质上是对 JDBC 的封装和增强,它的核心执行流程依赖于 JDBC 的 API。
JDBC 原生写法:
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db", "user", "password");
String sql = "SELECT * FROM users WHERE id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);
rs = pstmt.executeQuery();
while (rs.next()) {
System.out.println(rs.getString("username"));
}
} finally {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (conn != null) conn.close();
}
MyBatis 写法:
SqlSession session = sqlSessionFactory.openSession();
try {
User user = session.selectOne("findUserById", 1);
System.out.println(user.getUsername());
} finally {
session.close();
}
对比:
JDBC 手写代码复杂,需要手动管理连接、SQL 拼接和结果映射。 MyBatis 自动管理这些步骤,开发者只需编写 SQL 和映射规则,剩下的交给框架完成。
最后
再来推荐下我们的面试刷题网站和小程序:面试鸭!
我们精选了近两年的高频面试真题,已经有 9000 多道面试题目啦,由大厂资深面试官手写答案,押题命中率超高!
不仅有传统八股文,场景题、项目题、系统设计题等等应有尽有,还在不断更新中!
现在邀请好友注册并成为会员,还可获得最高 50% 的分佣🧧!详情见面试鸭拉新邀请有赏规则(网页版面试鸭点击头像查看)
网页端网址:www.mianshiya.com
欢迎关注面试鸭,每日获取经典面试题和优质题解,我们下期见~
往期推荐
我笑了,全国平均月薪过万了
字节跳动再次加码!大厂之间也开始卷起来了!
不愧是外企,连裁员福利也这么好。。。
手拿 8 个 offer ,他是按这路线刷的面试题
马斯克招人:要高智商、0 薪、每周工作 80 小时、还容易得罪人
没想到在 AMD 上班也被裁了